有沒有人碰巧知道退出狀態代碼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