2013-01-09 21 views
1

上正確使用返回錯誤代碼對於Windows(非GUI)中的C/C++應用程序,不同失敗的錯誤代碼的正確列表應該是什麼?我已經看到了來自IBM和其他人的各種列表,但是我想知道在程序退出時是否對用戶給出的典型錯誤代碼達成了一些共識。在退出

回答

3

有需要爲參數exit 3個便攜式值:0EXIT_FAILUREEXIT_SUCCESS0相當於EXIT_SUCCESS

+0

標準(至少是C)不會告訴任何有關'0'的返回值及其與'EXIT_SUCCESS'的關係(據我所知)。你可以參考標準嗎? – Shahbaz

+0

@Shahbaz儘管它們是相同的,但它們並不一定相等。也就是說,任何一個傳遞給'exit'都會導致程序返回一個「實現定義的狀態*成功終止*」。 (7.20.4.3/5)確保發生的最簡單方法是使值相等,但可能會執行'exit'來識別多個指定的「成功」值(即零和任何「EXIT_SUCCESS」擴展爲)。 –

+0

@羅伯肯尼迪,對。我錯過了「如果狀態的值是**零或EXIT_SUCCESS」中的零 – Shahbaz

2

來源:http://www.cplusplus.com/reference/cstdlib/EXIT_SUCCESS/

從項目的成功退出:

exit(EXIT_SUCCESS); 

從程序故障退出:

exit(EXIT_FAILURE); 

Wikipedia

除了宏EXIT_SUCCESS和EXIT_FAILURE外,C標準 沒有定義返回碼的含義。使用 返回碼的規則在不同的平臺上有所不同(請參閱平臺特定的 部分)。

在維基百科:

DOS

在DOS術語中,一個錯誤級別是由 一個可執行程序或子程序返回的整數退出代碼。錯誤級別通常範圍從 0到255.在DOS中,只有256個錯誤代碼可用。

視窗

Windows使用32位帶符號整數作爲退出代碼。[9]如果進程 初始化失敗,則可能會返回Windows系統錯誤代碼。[10] Windows系統錯誤代碼可在線獲取。[11]

退出代碼是直接引用的,例如,命令行解釋器CMD.exe以從DOS繼承的錯誤級別術語中引用。 .NET Framework進程和Windows PowerShell將其稱爲Process對象的 ExitCode屬性。

根據維基百科,以下link包含與Windows平臺

+0

jcatki.no-ip.org/fncpp/cplusplus.com – Griwes

+1

維基百科是錯誤的。 0是'exit'的有效參數。 –

1

錯誤代碼不會有任何這樣的標準,據我所知。唯一的標準是返回EXIT_SUCCESS(來自stdlib.h),以防成功返回。這有助於調用程序的腳本檢查是否成功。您返回的錯誤代碼需要記錄在您的程序中。 POSIX建議從主體返回0-255之間。通常爲0是EXIT_SUCCESS。

如果您只有一個特定的失敗返回,您可以使用EXIT_FAILURE。

+0

回覆:「通常'0'是'EXIT_SUCCESS'':在每個符合實現'0'和'EXIT_SUCCESS' ** **都可以用來表示成功。 –