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
'시스템 프로그래밍' 카테고리의 다른 글
시스템 프로그래밍 12장 - IPC methods (Shared memory) (0) | 2020.06.11 |
---|---|
시스템 프로그래밍 12장 - IPC methods (Message queue) (0) | 2020.06.11 |
시스템 프로그래밍 11장 - Timer (0) | 2020.06.11 |
시스템 프로그래밍 10장 - Signal 2 (0) | 2020.06.11 |
시스템 프로그래밍 10장 - Signal 1 (0) | 2020.06.10 |