簡體   English   中英

為什么我不能從主函數返回更大的值?

[英]Why can't I return bigger values from main function?

我試圖從我的主函數返回一個更大的值,比如 1000,但是當我輸入echo $? 它顯示為 0。

如果我返回一個較小的值,如 100,它會顯示正確的值。

我的代碼:

int main(void)
{
     return 1000;
}

我們可以返回的值有什么限制嗎?

這里有兩個相關的概念:C 退出狀態和 bash 返回碼。 它們都涵蓋 0-255 的范圍,但是 bash 出於自己的目的使用 126 以上的數字,因此從您的程序中返回這些數字會令人困惑。

為了安全起見,將退出狀態代碼限制為 0-127,因為這是最便攜的,至少http://docs.python.org/library/sys.html#sys.exit暗示了這一點。

C 退出狀態放入 bash $? 執行后變量,但 bash 使用 127 表示“未找到命令”,因此您可能希望避免這種情況。 Bash 參考頁

Bash 還使用 128-255 作為信號 - 它們表示進程被信號殺死: exit code = 128 + signal number 因此,您可能可以使用接近 255 的數字,因為信號數字不太可能變得如此之高。

除了這些通用指南之外,還有許多嘗試定義不同數字的含義: http : //tldp.org/LDP/abs/html/exitcodes.html

所以如果你想從你的程序中返回一個任意整數,最好將它打印到標准輸出,並從你的 bash 腳本中使用VALUE=$(program)捕獲它。

main的返回值(即應用程序的退出狀態)在 *NIX 上限制在 [0, 255] 范圍內。 1000 超出范圍,操作系統可能將其視為 0。

在 Unix-land 中, main的返回值是有限的,因為exit被限制在 8 位字節的范圍內。

在 Windows 中,有一個值為 259 的STILL_ACTIVE值,最好避免將其作為進程退出代碼。

除此之外,在 Windows 中,您可以返回 32 位代碼,例如HRESULT ,這通常是這樣做的。

暫無
暫無

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

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