【问题标题】:Waitpid in c++ creating problemsC ++中的Waitpid创建问题
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多