popen("grep ps","w") 이것 이상합니다. 기다리기 싫을 텐데..
글쓴이: dltkddyd / 작성시간: 수, 2013/02/27 - 7:04오후
#include <cstdio>
#include <cstdlib>
#include <unistd.h>
#include <cstring>
int main() {
char rbuffer[1024];
FILE* pipefp1=popen("ps -l","r");
FILE* pipefp2=popen("grep ps","w");
while(fgets(rbuffer,1024,pipefp1)!=0) {
fputs(rbuffer,pipefp2);
fputs(rbuffer,pipefp2);
}
pclose(pipefp1);
pclose(pipefp2);
return 0;
}위와 같은 코드에서 pipefp1이 있는 행의 popen을 알겠는데, 그 아래 행이 이해되지 않습니다.
FILE* pipefp2=popen("grep ps","w");
에서 grep ps는 이미 자식프로세스에서 실행된 것 아닌가요? 그렇데 while블록 안의 두 번째 fputs에서 입력을 받아 실행이 됩니다. w인 경우 자식프로세스는 입력을 받을 때까지 대기하는 것인가요? r일 경우는 대기하지 않는 것 같은데요.
Forums:


댓글 달기