【发布时间】:2012-01-24 07:12:49
【问题描述】:
我正在使用给定的waitpid
waitpid(childPID, &status, WNOHANG);
这用于无限循环内的程序中,该循环在需要时分叉,父进程等待子进程返回。但是最近我遇到了一个问题,在将其打印到 cerr 后程序退出。
waitpid:没有子进程
这始终是程序崩溃/退出之前的最后一个日志。我知道它没有段错误或任何东西,因为我编写了一个回溯函数,该函数打印程序访问的最后 10 个地址。那么是不是意味着程序发现没有子进程后就退出了循环呢?还是这里有什么不祥之兆?
【问题讨论】:
-
你在检查
waitpid的返回值吗?在我看来,它正在返回ECHILD。 -
但是程序为什么会退出?
-
只有您知道,我们不知道您的代码在该 waitpid 之前或之后做了什么。
-
一个未处理的信号可以使程序终止。查看返回码(bash下,程序终止后,查看echo $?的输出)
标签: c++ c linux parent-child waitpid