簡體   English   中英

用戶調用Ctrl-C時保存程序狀態

[英]Saving program state when user invokes Ctrl-C

在python中,當用戶調用Ctrl-C時會發生什么? 我是否有可能保存程序狀態?

上下文管理器怎么樣? __exit__()部分是否被執行?

基本上,在主線程內引發了KeyboardInterrupt異常。 所以,是的,您可以通過在try / except塊中捕獲它來處理它,並執行__exit__()部分

https://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt

這就是atexit模塊的用途。 您可以注冊多個退出處理程序。 您可以通過運行此程序並觀察顯示的消息來查看它的工作情況:

import atexit

@atexit.register
def exithandler():
    print("Exit trapped!")

if __name__ == '__main__':
    while True:
        pass

我只會提到一個內置的信號 ,它可以處理Ctrl + C和更多信號,如SIGHUP等。

import signal

def signal_handler(signal, frame):
    # Do work
    # Thread cleanup
    # pickle program state
    # remove(pidfile) # as an example
    exit(0)

signal.signal(signal.SIGINT, signal_handler)

這只是一個可以處理大量信號的廣泛框架的例子。
這是您可以捕獲的一些信號的列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM