有没有人碰巧知道退出状态代码4479(0x117f)在Ubuntu Linux系统上的含义?我得到这个没有我的程序编码它(我只有EXIT_SUCCESS和EXIT_FAILURE,分别是0和1),我似乎无法找到这样的代码列表超过255.谢谢!退出状态码4479
回答
这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),这意味着“子进程停止或终止”。
不知道更多关于您的特定应用程序上下文,我不知道为什么发生SIGCHLD。
非常感谢!如果您有时间,请参阅下面的后续内容。 – 2011-03-14 17:08:43
看起来这是状态值从wait()
or waitpid()
获得,这与退出状态不一样。宏WIFEXITED()
,WIFSIGNALED()
,WIFSTOPPED()
,WIFCONTINUED()
应该用于状态值来确定其含义。在这种情况下,看起来WIFSTOPPED()
对于状态的这个值将为真,这意味着子进程已停止。
我明白了。感谢你们(Marnix Klooster和mark4o)。这实际上是由一个子进程的waitpid捕获的值,所以系统用SIGCHLD杀死子进程是有意义的。但是,这就提出了系统为什么杀死儿童进程的问题。如果子进程导致分段错误,内核是否会发送SIGCHLD而不向stderr发送“分段错误”消息?再次感谢。 – 2011-03-14 17:07:56
如果'WIFSTOPPED()'为true,表明进程已停止(挂起),则不会终止。至于stderr上的消息(例如“Segmentation fault”),它由shell自己的子进程显示。在这种情况下,这个过程是你的孩子,而不是外壳的孩子,所以如果你想向用户报告它的状态是你的责任(你可以使用psignal或psiginfo:http://www.kernel。组织/ DOC /人-页/在线/页/ man3/psignal.3.html)。 – mark4o 2011-03-15 03:23:26
- 1. 代码退出状态255
- 2. 检查退出状态退出状态
- 3. 命名约定:退出状态,退出代码或返回码?
- 4. 'ls`退出状态
- 5. KnpSnappyBundle产生退出状态码“2”
- 6. Docker退出状态代码139
- 7. C代码以非零状态退出
- 8. 捕获退出状态代码
- 9. 不同的BASH退出状态代码
- 10. 退出非零状态
- 11. Xcode gcc退出状态1
- 12. ruby at_exit退出状态
- 13. wait()SIGCHLD和退出状态
- 14. ffmpeg退出状态-1094995529
- 15. 程序退出状态
- 16. 退出程序的状态
- 17. shishir已退出状态10?
- 18. 退出状态Monad循环
- 19. KnpSnappyBundle退出状态代码'127'说出了一些问题:
- 20. 列出带描述的所有系统退出状态代码
- 21. 退出状态代码'1'表示出错了[knp snappy]
- 22. 在g ++中使用-pass退出代码时发生意外退出状态
- 23. 码头集装箱运行错误:容器退出错误:退出状态1
- 24. 任何退出状态,没有明确使用返回/退出
- 25. 已退出:scrapy(退出状态0;未预期)
- 26. Apache Spark工作者执行程序退出退出状态1
- 27. 退出()的消息和非零退出状态
- 28. CVS cvs命令退出退出状态1
- 29. 该过程的退出状态在退出之前已打印
- 30. 如何正确退出UML状态图中的嵌套状态?
更多内容请! – 2011-03-14 04:53:40