0

有一些这样的代码:

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

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

mExitStatus = 15
status = 3840

对于“mExitStatus = WEXITSTATUS(status)”,我得到以下说明

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 回答 1

1

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

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

于 2014-05-18T08:55:43.047 回答