Где я могу найти информацию о значении кодов выхода процесса "python" в Unix? Например, если я делаю "python thisfiledoesntexist.py", я получаю код выхода 2
Резюме:
from errno import errorcode
print errorcode[2]
Где я могу найти информацию о значении кодов выхода процесса "python" в Unix? Например, если я делаю "python thisfiledoesntexist.py", я получаю код выхода 2
Резюме:
from errno import errorcode
print errorcode[2]
Как указано, в основном коды ошибок исходят из выполненных script и sys.exit()
.
Пример с не существующим файлом в качестве аргумента интерпретатора относится к другой категории. Хотя его нигде не указано, я бы предположил, что эти коды выхода являются "стандартными" кодами ошибок Linux. Существует модуль под названием errno
, который содержит эти номера ошибок (коды выхода поступают из linux/include/errno.h
.
I.e.: errno.ENOENT
(означает "Нет такого файла или каталога" ) имеет номер 2, который совпадает с вашим примером.
В руководстве python указано это относительно кодов выхода:
В некоторых системах есть соглашение о назначении конкретных значений конкретным кодам выхода, но они, как правило, недостаточно развиты; Программы Unix обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других ошибок.
Итак, поскольку вы указали thisfiledoesntexist.py
как аргумент командной строки, вы получите код возврата 2 (предполагая, что файл фактически не существует. В этом случае я рекомендую переименовать его в thisfiledoesexist.py
. ;)
)
Другое, что такие ошибки синтаксического анализа, код возврата определяется запуском программы python. 0 возвращается, если вы не укажете другой код выхода с sys.exit
. Сам Python не вмешивается.
Может быть, кодовые константы кода из os module могут вам помочь. Также посмотрите sys.exit документацию.
http://www.wingware.com/psupport/python-manual/2.7/library/sys.html
EDIT: сосредоточиться на части, которая объясняет это:
http://www.wingware.com/psupport/python-manual/2.7/library/sys.html#sys.exit
К сожалению, нет 100% гарантии того, что коды выхода Pythons будут такими, какими документацией заявят, что они будут: os._exit позволяет программисту python определять, какой код выхода предполагается использовать, что означает, что python file_exists_but_claims_that_it_does_not.py
может выйти с os.EX_DATAERR