2011-07-20 163 views
17

從哪裏可以找到有關Unix上「python」進程退出代碼含義的信息?舉例來說,如果我做的 「巨蟒thisfiledoesntexist.py」,我得到退出代碼2Python退出代碼

摘要:

from errno import errorcode 
print errorcode[2] 

回答

8

如前所述,主要是錯誤代碼來自執行的腳本和sys.exit()

具有非現有文件作爲解釋器參數的示例屬於不同的類別。儘管我猜測它沒有任何說明,但這些退出代碼是「標準」linux錯誤代碼。有一個名爲errno提供這些錯誤的數字模塊(來自linux/include/errno.h的退出代碼

即:errno.ENOENT(表示爲「沒有這樣的文件或目錄」)有一個與您例如

一致2號。
7

蟒蛇手冊指出這對於它的退出代碼:

一些系統具有特定退出代碼指定特定的含義慣例,不過一般都是不發達; Unix程序通常使用2作爲命令行語法錯誤,1使用其他類型的錯誤。

所以,既然您指定thisfiledoesntexist.py作爲命令行參數,你得到的2返回代碼(假設該文件不,事實上存在的。在這種情況下,我推薦它重命名爲thisfiledoesexist.py;)

其他的那種解析錯誤,返回碼由python程序運行決定。除非您指定sys.exit另一個退出代碼,否則返回0。 Python本身不會干涉。

1

不幸的是,沒有100%的保證,蟒蛇退出代碼將是他們會有怎樣的documentation聲稱:os._exit允許Python程序員來定義其退出代碼應該被使用,這意味着python file_exists_but_claims_that_it_does_not.py可以用os.EX_DATAERR

退出
+0

在我的Ubuntu系統上,它好像從'errno'返回代碼,不確定'os'代碼是什麼,但是賦予與'errno'模塊相同數值的不同含義 –