簡體   English   中英

程序退出 state

[英]Program exit state

我對 Linux 中的程序退出 state 有疑問。 在我的程序中,我 fork 一個子進程並調用waitpid來獲取它。 waitpid返回時,我想檢查我的子進程的退出 state。 我轉向手冊尋求幫助,發現waitpid的第二個參數將保留 exit state ,我可以使用宏WEXITSTATE來讀取它。 但是,此宏僅提取實際退出 state 的最低有效 8 位,而在 function exit(int ret_val)的手冊中,它將以ret_val & 0x377退出,而不是最低有效 8 位。

我的問題是,其他更多的位在哪里? 我們只是放棄它們嗎? 為什么 Linux 采用這種策略? 這個實現不會給我們的程序帶來麻煩嗎?

謝謝和最好的問候。

我想你會發現0x377真的是,或者應該是, 0377

它是八進制的,所以377 8是 8 位。

根據 POSIX 規范,退出返回值僅假設在 0 到 255 之間。 您不應該返回高於該值的值(換句話說,符合 POSIX 的操作系統將只關心退出返回值的低八位,這就是將傳遞給父進程的全部內容)。

Unix/POSIX 僅支持 8 位。 10 位將是一個奇數(在數學和邏輯意義上)值,所以我必須同意@DigitalRoss。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM