Python

Python - sys.exit(0) 과 sys.exit(1)의 차이 exit code

올엠 2024. 3. 25. 17:06
반응형

 

OS에서는 해당 프로그램이 HTTP와 유사하게 처리 결과에 따른 오류로 종료되었는지 정상적으로 종료되었는지를 확인하는 Status Code가 있다. 이를 Exit Code라고 하면 1과 0으로 구분된다.

  • exit 0

EXIT_SUCCESS, 작업 성공

  • exit 1

EXIT_FAILURE, 작업 실패

exit 1로 종료를 하게 되면, 시스템에 존재하는 Error Handler가 동작하게 된다.

프로그램 적으로 보면 Try/Catch 처럼 Catch로 보내게 된다.

Python에서도 만약 import sys를 이용해서 종료를 할 수 있는데 이때 코드를 지정하여 종료가 가능하다.

만약 아래와 같이 1로 프로그램을 종료하게 되면, 오류로 인식하여 Error Handler가 동작한다. 다만 시스템 레벨이기 때문에 파이썬의 try / except로는 잡을 수 없다.

import sys

sys.exit(1)

이를 이용하여 가장 심플하고 간단하게 현재 프로그램이 정상인지 비정상 종료인지 알릴 수 있다.

그리고 Shell 상태에서는 $?에 값이 저장되어 있으므로 아래처럼 프로그램이 남긴 상태값 1이 종료한 이후에 echo로 확인해보면  $?에 1이 저장되어 있는것을 알 수 있다. 

이를 이용해서 이전 실행 프로그램의 비정상 유무 확인이 쉘 스크립트 등에서 가능하다.


 $?는 마지막 값만 저장되어 있다는 점을 이해하기 바란다.

반응형