프로 세 스 간 통신 2

유명한 파이프 (FIFO)
유명한 파 이 프 는 장치 파일 입 니 다. FIFO 는 파이프 와 다른 점 이 있 습 니 다. FIFO 의 파일 형식 으로 파일 시스템 에 저 장 된 경로 이름 을 제공 합 니 다. 프로 세 스 가 FIFO 를 만 드 는 프로 세 스 와 친연 관계 가 없 더 라 도 이 경 로 를 방문 할 수 있 으 면 FIFO 를 통 해 서로 통신 할 수 있 습 니 다. FIFO (First In First Out)항상 선진 적 인 선 출 원칙 에 따라 일 하고 첫 번 째 로 기 록 된 데 이 터 는 먼저 파이프 에서 읽 습 니 다.
유명한 파이프 생 성 및 읽 기와 쓰기
1. 셸 에서 서로 유명한 파 이 프 를 만 듭 니 다.
셸 에서 mknod 나 mkfifo 명령 을 사용 할 수 있 습 니 다. 예 를 들 어 mknod 명령 으로 유명한 파 이 프 를 만 들 수 있 습 니 다.
mknod namedpipe

2. 프로그램 에서 시스템 함 수 를 사용 하여 유명한 파 이 프 를 만 듭 니 다.
유명한 파 이 프 를 만 드 는 시스템 함수 1. mknod 2. mkfifo 두 함 수 는 모두 헤더 파일 sys/stat. h 에 정의 되 어 있 습 니 다. 호출 에 성공 하여 0 을 되 돌려 주 었 습 니 다. 실패 되 었 습 니 다 - 1. 함수 원형:
#include 
#include 
int mknod(const char *path, mode_t mod, dev_t dev);
int mkfifo(const char *path, mode_t mod);

path: 만 든 유명한 파이프 의 전체 경로 이름 mod: 만 든 유명한 파이프 모드 입 니 다. 액세스 권한 dev: 장치 값 을 가리 키 며, 이 값 은 파일 이 만 든 종류 에 달 려 있 습 니 다. 장치 파일 을 만 들 때 만 사 용 됩 니 다.
mknod 함수 로 유명한 파 이 프 를 만 듭 니 다.
umask(0);
if (mknod ("/tmp/fifo",S_IFIFO | 0666, 0) == -1)
{
    perror("mknod error!");
    exit(1);
}

mkfifo 함수 로 만 들 기
umask(0);
if (mkfifo ("/tmp/fifo",S_IFIFO | 0666) == -1)
{
    perror("mkf error!");
    exit(1);
}

유명한 파 이 프 를 사용 할 때 는 먼저 open () 을 호출 하여 열 어야 합 니 다. 유명한 파 이 프 는 하 드 디스크 에 존재 하 는 파일 이기 때 문 입 니 다. open () 을 호출 하여 유명한 파 이 프 를 여 는 프로 세 스 가 막 힐 수 있 습 니 다. 읽 기 전용 (O RDONLY) 으로 열 면 open () 을 호출 합 니 다.함수 의 프로 세 스 는 쓰기 자가 파 이 프 를 열 때 까지 막 힐 것 입 니 다. 쓰기 방식 (O WRONLY) 으로 만 열 면 읽 는 사람 이 파 이 프 를 열 때 까지 막 힐 것 입 니 다.

좋은 웹페이지 즐겨찾기