FIFO(named pipe)
FIFO파일(named)을 읽고 씀으로써 파이프 통신을 한다.
#include<stdio.h>
int mknod(char *pathname, mode_t mode , dev_t dev);
특수한 파일을 만든다.
pathname - 경로, mode - 파일 권한 + 파일의 형태, dev - 디바이스 번호
int mkfifo(char *pathname, mode_t mode);
FIFO파일을 만든다. wrapper함수로 내부적으로 mknod(pathname, S_IFIFO|PERMS|...,NULL)을 호출한다.
pathname - 경로, mode - 파일 권한
상황 | O_NDELAY 없음(blocking) | O_NDELAY 설정(nonblocking) |
write하려는 프로세스 X read로 fifo open | write로 FIFO를 open하려는 프로세스 나타날 때까지 block | 에러 없이 즉시 리턴. |
read하려는 프로세스 X write로 fifo open | read로 FIFO를 open하려는 프로세스 나타날 때까지 block | errno = ENXIO와 함께 즉시 리턴. |
FIFO를 read하려는 데 비었을 경우 | FIFO가 write될 때까지 block. 만약 write하려는 프로세스가 없으면 0을 리턴 | 즉시 0을 리턴. |
FIFO를 write하려는 데 꽉찼을 경우 | 버퍼에 빈 공간이 생길 때까지 block | 즉시 0을 리턴. |
※ sys_err_str = strerror(int) : errno의 문자를 리턴.
'컴퓨터 공부 > Advanced UNIX System Programming' 카테고리의 다른 글
[5월 12일 1교시] 시스템V IPC - 세마포어 (0) | 2009.05.12 |
---|---|
[5월 11일 2교시] 시스템V IPC - 메세지큐 (0) | 2009.05.11 |
[5월 8일 3교시] IPC (0) | 2009.05.08 |
[5월 8일 2교시] 입출력 (0) | 2009.05.08 |
[5월 8일 1교시] 입출력 다중화 1 (0) | 2009.05.08 |