Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=mkfifo">mkfifo</a>(3)

1장. mkfifo(3)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

특수파일인 FIFO 를 만들기 위해서 사용한다. FIFO 는 다른말로 이름있는 pipe (명명된 파이프) 라고 부르기도 한다.


1.1절. 사용법

#include <sys/types.h>

#include <sys/stat.h>

int mkfifo ( const char *pathname, mode_t mode );
		


1.2절. 설명

mkfifo 는 특수 파일인 FIFO 파일을 만들기 위해서 사용되며, pathname 이름을 가지며 mode 의 권한을 가지는 FIFO 파일을 만들어낸다. 주로 IPC 용도로 사용된다.

FIFO 파일은 pipe 와 매우 비슷하지만, pipe 와 달리 이름있는 파일을 통해서 통신을 할수 있도록 해준다는 점이 다르다. 그러므로 관계없는 프로세스들이라고 할지라도 FIFO 파일이름만 알면 통신이 가능하도록 만들수 있다.

일단 FIFO 파일이 만들어지면 open, write, read 등의 표준 함수를 이용해서 보통의 파일처럼 접근이 가능하다.

FIFO 는 First In First Out 의 뜻을가진다. 먼저들어온 데이타가 먼저 나가는 queue 방식의 입/출력을 지원한다.


1.3절. 반환값

성공할 경우 0을 되돌려준다. 실패할 경우에는 -1 을 되돌려주며 적당한 errno 값을 세팅한다.


1.4절. 에러

EACCESS

pathname 의 디렉토리 구성요소중 어느 하나에 접근할수 없을때

EEXIST

pathname 이 이미 존재하고 있을때.

ENOENT

pathname 의 디렉토리 구성요소중 어느 하나가 존재 하지 않는 디렉토리를 가르키고 있을때


1.5절. 예제

#include <sys/types.h>

#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
    int state;
    state = mkfifo("/tmp/myfifo", S_IRUSR|S_IWUSR);
    if (state < 0)
    {
        perror("mkfifo error \n");
        exit(0);
    }
    for(;;)
    {
        sleep(1);
    }
}
		
위의 예제는 mkfifo 를 이용해서 /tmp/myfifo 란 파일을 만든다. 만들어진 파일을 ls 해보면 다음과 같은 정보를 보여준다.
[root@localhost test]# ls -al /tmp/myfifo 
prwx------    1 root     root            0  6월 16 18:40 /tmp/myfifo
		
'p' 를 통해서 FIFO 파일(pipe) 임을 알수 있다.