问题原型,在一个进程中,用system(命令)来执行一个命令,返回-1,并且errno是10,strerror(errno)是No child processes 。
也可以看帖子:
原来是调用system的进程事先忽略掉这个信号
SIGCHLD。看测试程序,如下:
#include
#include
#include
#include
#include
void main(void){
int ret = 0;
signal(SIGCHLD, SIG_IGN); /*这句注释掉,就是正常返回0,如果不注释掉,就返回错误,但是命令能正常执行。*/
ret = system("ls -l ");
printf("ret = %d errno=%d \n",ret, errno);
}
阅读(5337) | 评论(0) | 转发(0) |