[python] 파이썬에서 종료 코드

라는 메시지가 나타납니다 script xyz.py returned exit code 0. 이것은 무엇을 의미 하는가?

파이썬에서 종료 코드는 무엇을 의미합니까? 몇 개나 있습니까? 어느 것이 중요합니까?



답변

스크립트에서 찾고있는 것은에 대한 호출 sys.exit()입니다. 해당 메소드에 대한 인수는 종료 코드로 환경에 리턴됩니다.

스크립트가 exit 메소드를 호출하지 않으며 0이 기본 종료 코드 일 가능성이 높습니다.


답변

에서 의 문서sys.exit :

선택적 인수 arg는 종료 상태 (기본값은 0)를 나타내는 정수 또는 다른 유형의 객체 일 수 있습니다. 정수이면 0은 “성공 종료”로 간주되고 0이 아닌 값은 쉘 등에 의해 “비정상 종료”로 간주됩니다. 대부분의 시스템은 0-127 범위에 있어야하며 그렇지 않으면 정의되지 않은 결과를 생성합니다. 일부 시스템에는 특정 종료 코드에 특정 의미를 지정하기위한 규칙이 있지만 일반적으로 저개발 상태입니다. 유닉스 프로그램은 일반적으로 명령 줄 구문 오류에 2를 사용하고 다른 모든 종류의 오류에 1을 사용합니다.

종료 코드가 사용되는 예는 쉘 스크립트에 있습니다. bash $?에서 마지막 종료 상태에 대한 특수 변수 를 확인할 수 있습니다 .

me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43

개인적으로 /usr/include/asm-generic/errno.h(Linux 시스템에서) 종료 코드를 사용하려고 시도 하지만 이것이 올바른지 여부는 알 수 없습니다.


답변

레코드의 경우 여기에 정의 된 POSIX 표준 종료 코드를 사용할 수 있습니다 .

예:

import sys, os

try:
    config()
except:
    sys.exit(os.EX_CONFIG)
try:
    do_stuff()
except:
    sys.exit(os.EX_SOFTWARE)
sys.exit(os.EX_OK) # code 0, all ok


답변

errno표준 종료 코드를 정의 하는 모듈이 있습니다.

예를 들어 Permission denied 는 오류 코드 13입니다 .

import errno, sys

if can_access_resource():
    do_something()
else:
    sys.exit(errno.EACCES)


답변

종료 코드 0은 일반적으로 “아무것도 없습니다”를 의미합니다. 그러나 스크립트 프로그래머가 규칙을 따르지 않으면 소스를 참조하여 그 의미를 확인해야 할 수 있습니다. 일반적으로 0이 아닌 값은 오류 코드로 반환됩니다.


답변

대답은 “종료 코드 0의 의미에 따라 다름”입니다.

그러나 대부분의 경우 “모든 것이 정상입니다”라는 의미입니다


나는 POSIX를 좋아한다 :

따라서 쉘에서 다음을 입력합니다.

python script.py && echo 'OK' || echo 'Not OK'

내 파이썬 스크립트가 호출 sys.exit(0)하면 셸은 ‘OK’를 반환합니다

파이썬 스크립트가 호출 sys.exit(1)하거나 0이 아닌 정수를 호출 하면 쉘은 ‘Not OK’를 반환합니다

쉘에 대해 영리한 태도를 취하고 스크립트에 대한 문서 (또는 소스)를 읽고 종료 코드의 의미를 확인하십시오.


답변

운영 체제 명령에는 종료 코드가 있습니다. 이것에 대한 자료를 보려면 리눅스 종료 코드 를 찾으십시오 . 쉘은 종료 코드를 사용하여 프로그램의 작동, 문제점 또는 실패 여부를 판별합니다. 표준 (또는 최소한 일반적으로 사용되는) 종료 코드를 작성하려는 노력이 있습니다. 이 Advanced Shell Script 게시를 참조하십시오 .