본문 바로가기
Programming

popen()

by leanu 2008. 1. 1.

popen : 명령어 수행 (파이프 생성)

<원형>

     FILE *popen(const char *comstring, const char *type);

     int pclose(FILE *strm);


<인자>

     comstring : 수행할 명령어

     type : 부모와의 통신형태

     strm : 폐쇄할 파일 스트림

<리턴값>

     성공 : 열린 파일 스트림 포인터

     실패 : NULL

<함수 설명>

     popen() 도 system() 함수처럼 지정한 명령어를 수행한다. 그러나 호출 프로세스와 명령어 사이에 통신을 할 수 있는 파이프를 생성한다는 점이 system() 함수와 다르다. popen()을 호출하면 지정한 명령어를 수행하기 위해 fork()와 execl()을 수행한 후 파일 스트림을 반환하고 사용자는 그 반환된 파일 스트림을 이용해 표준 출력이나 표준 입력을 처리할 수 있다.그리고 어느 것을 지정할 지는 type 로 정한다.

     fp = popen("ls -l *","r");

     popen() 은 "ls -l *"명령어를 수행한다. system()함수는 이것을 화면에 뿌리지만 "r"을 이용하면 표준 출력되는 문자열을 다음과 같이 fp포인터를 이용해 읽을 수 있다.

          fgets(buff, buffsize, fp);

     또한 이와 반대로 표준 출력에 쓸 수도 있는데 이때 주의할 것은 popen()은 항상 pclose()로 닫아야 한다.

'Programming' 카테고리의 다른 글

Writing Solid Code 요약  (0) 2008.01.02
[MFC] 콤보박스에 따른 다른 동작 수행(펌)  (3) 2008.01.02
SetPixelFormat  (0) 2008.01.02
10진수 단위별 용어  (0) 2008.01.02
CRC Check  (0) 2008.01.01

댓글