1

我正在使用给定的waitpid

waitpid(childPID, &status, WNOHANG);

这用于无限循环内的程序中,该循环在需要时分叉,父进程等待子进程返回。但是最近我遇到了一个问题,在将其打印到 cerr 后程序退出。

waitpid:没有子进程

这始终是程序崩溃/退出之前的最后一个日志。我知道它没有段错误或任何东西,因为我编写了一个回溯函数,该函数打印程序访问的最后 10 个地址。那么是不是意味着程序发现没有子进程后就退出了循环呢?还是这里有什么险恶的东西在起作用?

4

1 回答 1

0

我猜这里发生的事情是由于进程表中缺少可用条目,fork 系统调用失败。您可以对 fork 的输出执行 perror。我认为应该是 RESOURCE_TEMPORARILY_UNAVAILABLE。

于 2012-01-24T08:43:33.803 回答