2013-05-12 75 views
0

我只能說一點英語,所以我希望你能理解我說的話。我如何使用wexitstatus獲得超過255的值

我fork了一個子進程,然後我在子進程中做ADD。 EX:56 + 48 = 104

如果值低於255,我可以使用「wexitstatus(status)」來獲得答案。

但是,如果值高於256,那就錯了!

我該怎麼辦?

回答

0

如果程序返回的退出代碼大於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並掛鉤。

相關問題