有没有人碰巧知道退出状态代码4479(0x117f)在Ubuntu Linux系统上的含义?我没有我的程序编码它得到这个(我只有EXIT_SUCCESS和EXIT_FAILURE,分别是0和1),我似乎无法找到255以上的代码列表。谢谢!
答案 0 :(得分:5)
这个4479或0x117f看起来像是从C / C ++ system()
调用返回的东西(而不是Unix $?
预定义变量的值,可能只有0-255) 。鉴于您使用的是Linux,您很可能使用glibc。
因此,在这种情况下,此值不是0-255 exit()
状态,而是格式化为waitpid()
设置的状态(可能包含退出状态,但可能没有在这种情况下)。
如果是这样,那么the source告诉我WIFSTOPPED(4479)
将返回true,WSTOPSIG(4479)
将返回17.(有关详细信息,请参阅waitpid()
手册页。)因此返回4479的过程尚未退出并且仍然存在,但它被信号17停止。
Signal 17 is SIGCHLD(至少如果你在x86上运行Linux),这意味着“Child [进程]停止或终止”。
在不了解您的特定应用程序上下文的情况下,我不知道为什么会发生SIGCHLD。
答案 1 :(得分:2)
看起来这是从wait()
or waitpid()
获取的状态值,与退出状态不同。应在 status 值上使用宏WIFEXITED()
,WIFSIGNALED()
,WIFSTOPPED()
和WIFCONTINUED()
来确定其含义。在这种情况下,对于 status 的值,WIFSTOPPED()
似乎是真的,这意味着子进程已停止。