FILE *popen(char *cmd,char *mode)
如果 mode 是“r",通常是一个父进程调用popen函数,那么此时popen生成了一个子进程,子进程干的事情 就是cmd,然后做完这件事后,会把结果送进子进程的标准输出,而这个标准输出就对应着父进程的一个流文件指针,比如FILE *fd,fd=popen(cmd,"r")的话,子进程的标准输出就对应于父进程的fd了。
如果mode 是”w“的话,父进程调用popen函数,并且把父进程的某个文件的流文件指针对应到子进程的标准输入上,即父进程向子进程提供标准输入数据。例子:
FILE *fd,fd=popen(cmd,"w")。此时就把fd对应的流文件作为子进程的标准输入了。
注意:popen是半双工的。父进行不可能同时既为子进程提供标准输入,又接受子进程的标准输出。
参考文献:《UNIX 环境高级编程》 第二版。508页