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页
本文详细介绍了popen函数的工作原理及使用方法。当模式为“r”时,父进程通过popen调用创建子进程并接收其标准输出;当模式为“w”时,父进程向子进程提供标准输入。值得注意的是,popen为半双工操作,不能同时用于输入和输出。
682

被折叠的 条评论
为什么被折叠?



