C/C++中system函数使用问题,返回报错:NO child processe

system报错现象:

在Linux下用system()函数执行命令时出错,返回-1,错误原因NO child processes。

分析:

根据官方手册,如果SIGCHLD信号行为被设置为SIG_IGN时,waitpid()函数有可能因为找不到子进程而报ECHILD错误。

问题的解决方案:

在调用system()函数前重新设置SIGCHLD信号为缺省值,即signal(SIGCHLD, SIG_DFL)。现已解决!将所有使用system命令的地方,采用封装函数system_monthpay(项目中的函数)。(目前程序中子进程信号确实设置了忽略,UNIX系统下未出现类似情况)

以下为实际项目中的修改方法:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章