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 |
댓글