프로그램 코드가 자연스럽게 종료되는 경우:
def main():
print("Doing some work...")
return
if __name__ == "__main__":
main()
# 프로그램 종료 시점
sys.exit()
가 호출된 경우:
sys.exit()
함수가 호출되면 정상적인 종료로 간주되며 atexit
핸들러가 실행import sys
def main():
print("Doing some work...")
sys.exit()
if __name__ == "__main__":
main()
강제 종료 (Forced Termination):
os._exit()
함수를 호출하면 atexit
핸들러는 호출되지 않습니다.import os
def main():
print("Doing some work...")
os._exit(0)
if __name__ == "__main__":
main()
시스템 충돌 (System Crash):
강제 종료 신호 (Interrupt Signal):
SIGKILL
같은 강제 종료 신호를 받는 경우. kill -9
명령을 사용하여 프로세스를 종료하는 경우.import signal
import os
def handler(signum, frame):
print("Signal handler called with signal", signum)
signal.signal(signal.SIGTERM, handler)
def main():
print("Doing some work...")
# 프로그램을 종료할 수 있도록 일정 시간 대기
os.kill(os.getpid(), signal.SIGKILL)
if __name__ == "__main__":
main()
심각한 예외 (Uncaught Exception):
특정한 예외가 처리되지 않아 프로그램이 종료되는 경우.
def main():
print("Doing some work...")
raise RuntimeError("Uncaught exception")
if __name__ == "__main__":
main()