찾다

 >  Q&A  >  본문

Python이 비정상적으로 종료되면 진행 상황을 저장하시겠습니까?

문제:
텍스트를 읽어 목록을 생성하세요. list.pop() 프로그램이 실행되는 동안. 이제 비정상 종료 시 목록에 있는 값을 텍스트에 다시 쓸 수 있는지 묻고 싶습니다.
예외:
Ctrl-c, kill, Ctrl-z
감사합니다!

黄舟黄舟2757일 전1118

모든 응답(3)나는 대답할 것이다

  • PHPz

    PHPz2017-05-18 10:55:50

    말씀하신 비정상적인 상황은 모두 프로그램이 해당 신호를 받아 기본 동작(exit)을 취함으로써 발생하므로 신호를 등록하고 기본 동작을 변경하면 프로그램이 비정상적으로 종료되는 것을 방지할 수 있습니다. .注册信号, 改变默认动作来避免程序异常退出.

    import signal
    import time
    
    def hander(signum, frame):
        # 接受到信号后你想做的事
        print signum, frame
    
    signal.signal(signal.SIGTERM, hander)  # 捕获kill : SIGTERM信号
    signal.signal(signal.SIGINT, hander)   # 捕获Ctrl-c: SIGTERM 信号(可以绑定不同的函数)
    signal.signal(signal.SIGTSTP, hander)  # 捕获 Ctrl-z: SIGTSTP信号(可以绑定不同的函数)
    while 1:
        time.sleep(1)

    经过上面的signal将对应的信号动作绑定到hander函数, 在接受到Ctrl-c , kill , Ctrl-z都能分别执行handler的代码了, 至于想怎么实现, 可以自定义, 如果除了这些信号意外的情况, 得示其他情况而决定采取什么措施! 可以学习下python signal 으아아아

    시그널을 통해 해당 신호 액션을 핸더 함수에 바인딩합니다. Ctrl-c, kill, Ctrl-z를 받은 후 핸들러를 실행할 수 있습니다. 의 코드를 구현하는 방법은 사용자 정의할 수 있습니다. 이러한 신호 외에 다른 상황이 발생하면 어떤 조치를 취해야 하는지 알 수 있습니다. code>python 신호. (일부 신호는 캡처할 수 없습니다. 이는 시스템에 의해 결정됩니다. 주의하시기 바랍니다)🎜

    회신하다
    0
  • ringa_lee

    ringa_lee2017-05-18 10:55:50

    주요 경우에서 예외를 잡을 수 있습니다:

    으아아아

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-18 10:55:50

    Python에는 atexit이라는 함수가 있는데, 이 함수는 프로그램이 종료될 때 다시 호출하여 일반 종료를 캡처할 수 있습니다.

    회신하다
    0
  • 취소회신하다