您的位置:首页 > 运维架构

popen()应该注意的问题 ---------- popen()成功,fgets()返回为NULL

2009-07-11 11:14 295 查看
函数原型:

FILE *popen(const char *command, const char *type);

当使用popen()时,不要屏蔽SIGCHLD信号,popen()使用fork()创建了子进程来运行所给的命令,需要通过此信号判断子进程是否已经退出。

如果第二个参数为"r",就不要关闭标准输出(close(1)),如果这样处理,就会导致popen()返回成功,但是fgets()返回为NULL。popen()无法从标准输出获取信息,所以popen()所返回的文件指针所指的内容是空的。

同样,如果第二个参数使用了"w",就不要关闭标准输入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: