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:
댓글 달기