子进程退出状态的含义

时间:2014-05-18 08:49:01

标签: c++ c linux process waitpid

有一些像这样的代码:

unsigned pid = waitpid(mPid, &status, WNOHANG);
mExitStatus = WEXITSTATUS(status);

获取变量的调试打印,如:

mExitStatus = 15
status = 3840

对于" mExitStatus = WEXITSTATUS(状态)",我得到以下解释说明

evaluates to the least significant eight bits of the return code of the child which terminated
3840 = F00; F is 15 which is assigned to mExitStatus

但问题是如何使用这15来判断子进程是否正确终止?

15是从3840开始的。但是3840是由linux进程返回的吗?对此有何意义?

在一般描述中,我的main启动了4个child_process,运行了4个测试。我想在我的主要内容判断是否通过了这4项测试。所以我认为我需要对我孩子流程的退出状态犹豫不决。

由于

1 个答案:

答案 0 :(得分:1)

标准是退出状态为零意味着“成功”,其他任何事情都是某种失败。在* nix系统上,129到150左右的值通常可以解释为“由于信号而导致进程终止”,信号编号​​是返回值减去128.一般故障通常会返回1,但有时会返回2或3或其他一些小数字。

最后,程序返回的程序完全取决于程序,但这些是典型值。