Linux 退出状态代码4479

Linux 退出状态代码4479,linux,process,exit,exitstatus,Linux,Process,Exit,Exitstatus,有人知道在Ubuntu Linux系统上退出状态代码4479(0x117f)是什么意思吗?我在没有程序编码的情况下得到了这些代码(我只有EXIT_SUCCESS和EXIT_FAILURE,分别为0和1),而且我似乎找不到255以上的代码列表。谢谢大家! 看起来这是从中获得的状态值,与退出状态不同。应在状态值上使用宏WIFEXITED()、WIFSIGNALED()、WIFSTOPPED()和wifccontinued(),以确定其含义。在本例中,此status值的WIFSTOPPED()看起来是

有人知道在Ubuntu Linux系统上退出状态代码4479(0x117f)是什么意思吗?我在没有程序编码的情况下得到了这些代码(我只有EXIT_SUCCESS和EXIT_FAILURE,分别为0和1),而且我似乎找不到255以上的代码列表。谢谢大家!

看起来这是从中获得的状态值,与退出状态不同。应在状态值上使用宏
WIFEXITED()
WIFSIGNALED()
WIFSTOPPED()
wifccontinued()
,以确定其含义。在本例中,此status值的
WIFSTOPPED()
看起来是真的,这意味着子进程已停止。

此4479或0x117f看起来像是从C/C++调用中返回的内容(与Unix预定义变量的值相反,它可能只有0-255)。考虑到您使用的是Linux,您很可能会使用

因此,在这种情况下,该值不是0-255状态,而是按设置的状态格式化(可能包含退出状态,但在这种情况下可能没有)

如果是这样,那么告诉我
WIFSTOPPED(4479)
将返回true,而
WSTOPSIG(4479)
将返回17。(有关更多信息,请参阅手册页。)因此,返回4479的进程尚未退出且仍在那里,但已被信号17停止

(至少如果您在x86上运行Linux),这意味着“子进程停止或终止”


如果不了解您的特定应用程序上下文,我不知道为什么会出现这种SIGCHLD。

我明白了。感谢你们两位(Marnix Klooster和mark4o)。这确实是waitpid从子进程捕获的值,因此系统使用SIGCHLD终止子进程是有意义的。然而,这就提出了一个问题,为什么系统会杀死子进程。如果子进程导致分段错误,内核是否会在不向stderr打印“分段错误”消息的情况下发送SIGCHLD?再次感谢。如果
WIFSTOPPED()
为true,则表示进程已停止(挂起),而不是终止。至于stderr上的消息(例如“Segmentation fault”),由shell为其自己的子进程显示。在这种情况下,该进程是您的子进程,而不是shell的子进程,因此如果您希望向用户报告其状态,则由您负责(您可以使用psignal或psiginfo:)。非常感谢!如果你有时间,请看下面我的后续报道。