有人碰巧知道退出状态代码 4479 (0x117f) 在 Ubuntu Linux 系统上的含义吗?我在没有程序编码的情况下得到了这个(我只有 EXIT_SUCCESS 和 EXIT_FAILURE,分别为 0 和 1),我似乎找不到 255 以上的此类代码列表。谢谢!
问问题
393 次
2 回答
6
这个 4479 或 0x117f 看起来像是从 C/C++system()
调用返回的东西(与 Unix$?
预定义变量的值相反,它可能只有 0-255)。鉴于您使用的是 Linux,您很可能会使用glibc。
所以在这种情况下,这个值不是 0-255exit()
状态,而是像设置的状态一样格式化waitpid()
(可能包含退出状态,但在这种情况下可能没有)。
如果是这样,那么源告诉我这WIFSTOPPED(4479)
将返回 true,并且WSTOPSIG(4479)
将返回 17。(有关waitpid()
更多信息,请参见手册页。)因此返回 4479 的进程尚未退出并且仍然存在,但它被停止了信号 17.
信号 17 是 SIGCHLD(至少如果您在 x86 上运行 Linux),这意味着“子 [进程] 已停止或终止”。
在不了解您的特定应用程序上下文的情况下,我不知道为什么会出现 SIGCHLD。
于 2011-03-14T06:07:51.157 回答
2
看起来这是从or获得的状态值,与退出状态不一样。应该在状态值上使用宏、、和来确定其含义。在这种情况下,这个status的值看起来是正确的,这意味着子进程已停止。wait()
waitpid()
WIFEXITED()
WIFSIGNALED()
WIFSTOPPED()
WIFCONTINUED()
WIFSTOPPED()
于 2011-03-14T06:05:36.503 回答