现在的位置: 首页 > 综合 > 正文

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

2013年09月22日 ⁄ 综合 ⁄ 共 281字 ⁄ 字号 评论关闭

    函数原型:

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

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

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

    同样,如果第二个参数使用了"w",就不要关闭标准输入。

抱歉!评论已关闭.