Hi there!

I am a student studying computer science.

시스템 프로그래밍

시스템 프로그래밍 12장 - IPC methods (FIFO)

만능성구 2020. 6. 11. 03:36
728x90

IPC methods

Pipe

FIFO

Message Queues

Shared Memory (b/w processes) 

FIFO (named pipe)

Revies on pipe()

- 가장 오래된 IPC

- data 전송하기 위해 두 개의 pipe를 만들어서 읽고 쓸 수 있도록 한다.

- pipe가 full or empty일 경우 blocked한다.

- 한계

        half duplex (한쪽으로만 흐른다)

        부모자식관계에서만 가능하다

        process간 넘겨줄 수 없다.

        상속한 모든 자식은 pipe가 생긴다.

        사용하지 않는 fd는 무조건 closed되어야한다.

FIFO

Pipe는 상속관계에서만 가능하다는 한계를 극복하기 위한 IPC

Pipe와 유사하게 동작한다.

하지만 관계없는 process들 끼리 매개체를 통해서 주고 받을 수 있다.

named Pipe!


#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
FIFO는 File을 생성하는 것과 유사하다.
File을 만드는 함수
File에 대한 system함수를 모두 사용할 수 있다. open close, read write unlink ...
pathname : file의 이름
mode : open permission
return 0 / -1

fifo-recv.c

fifo-send.c

 

FIFO Example in shell

1.

2.

FIFO Example client-server

여러개가 한번에 들어올 때 문제가 발생할 수 있다.

FIFO로 Server 구성하는 것은 제약점이 있을 수 있다.

728x90