linux下system函数错误返回-1,错误缘由NO child processes的解决办法

    今天在遇到一个问题,在Linux下用system()函数执行命令时出错,返回-1,错误缘由NO child processes。在网上查找了一下发现是若是SIGCHLD信号行为被设置为SIG_IGN时,waitpid()函数有可能由于找不到子进程而报ECHILD错误彷佛咱们找到了问题的解决方案:在调用system()函数前从新设置SIGCHLD信号为缺省值,即signal(SIGCHLD, SIG_DFL)。 html

    因此根据网上介绍的方法果然解决了。方法以下: 函数

typedef void (*sighandler_t)(int);
int pox_system(const char *cmd_line)
{
   int ret = 0;
   sighandler_t old_handler;

   old_handler = signal(SIGCHLD, SIG_DFL);
   ret = system(cmd_line);
   signal(SIGCHLD, old_handler);

   return ret;
}
代码引用自 http://www.verydemo.com/demo_c167_i3191.html;
相关文章
相关标签/搜索