- 파이프는 두 프로세스 사이의 자료 흐름 통로를 제공하는 수단이다. 일반적으로 파이프는 한 프로세스의 출력을 다른 프로세스의 입력에 연결하는 용도로 쓰인다.
- 셸에서는 | 기호를 이용하여 명령을 넣는 것으로 파이프를 사용한다.
프로세스 파이프
#include <stdio.h>
FILE *popen(const char *command, const char *open_mode);
- popen_mode가 "r"인 경우 호출한 프로그램은 fread 같은 통상적인 stdio 라이브러리 함수들을 이용해서 popen이 반환한 파일 스트림 FILE*을 읽음으로써 호출된 프로그램의 표준 출력을 읽을 수 있다.
- popen_mode가 "w"인 경우 호출한 프로그램은 fwrite로 popen이 반환한 파일 스트림에 자료를 기록함으로써 호출된 프로그램에게 자료를 보낼 수 있다.
- 그러므로 popen으로는 양방향 입출력이 불가능하다는 뜻이다. 호출 실패시에는 널포인터를 돌려준다.
- 양방향을 위해서는 입력 출력을 각각의 파이프를 이용하여 사용하는 것이다.
#include <stdio.h>
int pclose(FILE *stream_to_close);
- popen으로 생성한 파일스트림을 닫는것. popen으로 띄운 프로세스가 완료되어야 반환된다. pclose를 호출한 시점에서 해당 프로세스가 아직 실행 중이라면 그 호출은 해당 프로세스가 종료될 때까지 차단된다.
- pclose를 호출하기 전에 wait를 호출했다면 해당 프로세스의 종료 상태가 사라진 후이므로 pclose는 -1을 돌려준다. 이경우 errno에는 ECHILD가 설정된다.
- popen1.c
- popen2.c
- popen3.c
'개발 > Linux' 카테고리의 다른 글
커널 관리 (0) | 2015.02.11 |
---|---|
커널 모듈 (0) | 2015.02.11 |
프로세스와 신호 - 안정적인 신호 인터페이스 (0) | 2014.11.07 |
프로세스와 신호 - 신호 보내기 (0) | 2014.11.07 |
프로세스와 신호 - 신호 (0) | 2014.11.07 |