2017-05-28 81 views
1

在Linux中,C++可以返回退出代碼嗎?即是該代碼有效:Linux,C++,負面退出代碼,澄清?

int main() 
{ 
    return -1; 
} 

的理由,如果這種代碼被編譯和慶典/ zsh中執行我問,返回值是255,我輕薄本由於是使用一個8位的事實返回碼,並且這意味着返回碼只能在正值之間。

這是正確的嗎?

+4

交叉重複:https://unix.stackexchange.com/questions/37915/why-do-i-get-error-255-when-returning-1 –

+0

是的,外殼只與0 - 255作爲一個返回代碼值。 – 0x0C4

回答

1

相關係統調用是_exit(),和POSIX itself specifies只的狀態的低8位給予_exit()通常可用:

_exit(status)
的狀態值可以是0EXIT_SUCCESSEXIT_FAILURE,或任何其他值,但只有最低有效8位(即status & 0377)可從wait()waitpid()獲得;

雖然它繼續說「完整的值應該從waitid()可用」,但在Linux上,我似乎仍然只得到低八位。

0

否,傳遞給exit(2)的退出代碼與您的程序通過發送給它的信號中斷的情況下的數據合併。 exit(2)返回碼僅爲wait(2)返回的代碼的最小顯式字節。有關如何形成返回碼的說明,請參見wait(2)exit(2)的頁面。