我只能說一點英語,所以我希望你能理解我說的話。我如何使用wexitstatus獲得超過255的值
我fork了一個子進程,然後我在子進程中做ADD。 EX:56 + 48 = 104
如果值低於255,我可以使用「wexitstatus(status)」來獲得答案。
但是,如果值高於256,那就錯了!
我該怎麼辦?
我只能說一點英語,所以我希望你能理解我說的話。我如何使用wexitstatus獲得超過255的值
我fork了一個子進程,然後我在子進程中做ADD。 EX:56 + 48 = 104
如果值低於255,我可以使用「wexitstatus(status)」來獲得答案。
但是,如果值高於256,那就錯了!
我該怎麼辦?
如果程序返回的退出代碼大於255,程序就是錯誤的,需要修復。這是違反Unix標準的。如果你不使用標準的Unix,你可能需要從組織的聯繫人那裏獲得專家的幫助。
從手冊頁爲等待():
WEXITSTATUS(stat_val)
如果WIFEXITED(stat_val)的值是非零,則該宏計算結果爲低位的8位status進程傳遞給_exit()或exit(),或者子進程從main()返回的值。
它侷限於8位,這意味着1個字節,這意味着從WEXITSTATUS整型只能從0-255範圍內。事實上,任何 Unix程序將只會返回最大值爲255.
此外,許多操作系統/程序保留> 127系統指定的代碼,所以你甚至不應該使用任何以上的東西。
如果您需要比126更多的返回碼(因爲0沒有錯誤),可以考慮將其寫入STDOUT並掛鉤。