파이프를 생성한다.
#include <unistd.h>int pipe(int filedes[2]);
pipe 를 이용하면 2개의 파일 지시자를 생성할수 있다. 2개가 생성되는 이유는 읽기전용과 쓰기전용의 파이프를 생성하기 위함이다. filedes[0] 은 읽기 전용, filedes[1] 은 쓰기전용의 파이프로 사용된다.
이들 파이프는 주로 부모프로세스와 자식프로세스간의 통신을 위한 목적으로 사용된다.
성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.
너무 많은 파일 디스크립터가 프로세스에 의해 사용되고 있다.
시스템 파일 테이블이 꽉찼을경우
filedes 가 유효하지 못하다.
시스템에 연산을 위해서 이용할수 있는 자원이 부족할때
#include <unistd.h>#include <stdlib.h>#include <stdio.h>int main(){ int n, fd[2]; char buf[255]; int pid; if (pipe(fd) < 0) { perror("pipe error : "); exit(0); } // 파이프를 생성한다. if ((pid = fork()) < 0) { perror("fork error : "); exit(0); } // 만약 자식프로세스라면 파이프에 자신의 PID(:12) 정보를 쓴다. else if (pid == 0) { close(fd[0]); while(1) { memset(buf, 0x00, 255); sprintf(buf, "Hello : %d\n", getpid()); write(fd[1], buf, strlen(buf)); sleep(1); } } // 만약 부모프로세스(:12)라면 파이프(:12)에서 데이타를 읽어들인다. else { close(fd[1]); while(1) { memset(buf, 0x00, 255); n = read(fd[0], buf, 255); fprintf(stderr, "%s", buf); } }}
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. pipe(2)
파이프를 생성한다.
1.1절. 사용법
1.2절. 설명
pipe 를 이용하면 2개의 파일 지시자를 생성할수 있다. 2개가 생성되는 이유는 읽기전용과 쓰기전용의 파이프를 생성하기 위함이다. filedes[0] 은 읽기 전용, filedes[1] 은 쓰기전용의 파이프로 사용된다.
이들 파이프는 주로 부모프로세스와 자식프로세스간의 통신을 위한 목적으로 사용된다.
1.3절. 반환값
성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.
1.4절. 에러
너무 많은 파일 디스크립터가 프로세스에 의해 사용되고 있다.
시스템 파일 테이블이 꽉찼을경우
filedes 가 유효하지 못하다.
시스템에 연산을 위해서 이용할수 있는 자원이 부족할때
1.5절. 예제
Recent Posts
Archive Posts
Tags