11. 프로세스간 통신 : 파이프
파이프란 무엇인가?
하나의 프로세스에서 다른 프로세스에게로 데이터 흐름을 연결할 때 사용
프로세스 파이프
- popen
popen함수는 프로세스 내부에서 다른 프로그램을 새로운 프로세스로 불러낼 수 있고 새로운 프로세스와 데이터를 주고 받을 수 있다.
두번째 매개변수 open_mode가 'r'이면 fread를 통해 불리워진 프로그램으로부터 데이터를 얻어올 수 있다.
open_mode가 'w'이면, fwrite를 통해 불리워진 프로그램으로 데이터를 전송할 수 있다.
open_mode는 'r'과 'w'를 동시에 쓸 수 없다.
- pclose
popen으로 생성된 프로세스와 연결된 스트림을 닫는다.
[예제. p430]
- popen으로 출력을 보내기
[예제. p431] popen에 실행 인자로 od -c 를 사용한다.
- 더 많은 데이터를 전달하기
[예제. p432]
fread로 여러번 읽기를 시도한다. while문으로 fread함수가 더이상 읽을 것이 없을 때까지 계속 읽어온다.
- popen은 어떻게 실행되는가?
popen은 먼저 쉘인 sh를 수행하고 인자로 'command'문자열을 넘겨줌으로서 원하는 프로그램을 수행한다.
이것은 다양한 쉘 명령어를 쓸 수 있는 장점과 동시에 popen을 호출할 때마다 쉴 까지 실행시켜야 한다는 단점이 있다.
[예제. p434]
[출처] [리눅스프로그래밍]11.프로세스간 통신:파이프|작성자 투더리
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
파이프 (pipe) (0) | 2009.05.28 |
---|---|
1장. popen(2) (0) | 2009.05.28 |
GCC Error (Warning) Message List (1) | 2009.05.27 |
strtok_r 과 strtok 의 차이점? (0) | 2009.05.27 |
[C언어] 문자열 함수 정리 (0) | 2009.05.27 |