函数原型:
FILE *popen(const char *command, const char *type);
当使用popen()时,不要屏蔽SIGCHLD信号,popen()使用fork()创建了子进程来运行所给的命令,需要通过此信号判断子进程是否已经退出。
如果第二个参数为"r",就不要关闭标准输出(close(1)),如果这样处理,就会导致popen()返回成功,但是fgets()返回为NULL。popen()无法从标准输出获取信息,所以popen()所返回的文件指针所指的内容是空的。
同样,如果第二个参数使用了"w",就不要关闭标准输入。