본문 바로가기

컴퓨터/언어,프로그래밍

11. 프로세스간 통신 : 파이프

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]


'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글

파이프 (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
제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...