小编Col*_*n M的帖子

Python:Catch Ctrl-C命令.提示"真的想退出(y/n)",如果没有,则恢复执行

我有一个可能有长时间执行的程序.在主模块中,我有以下内容:

import signal
def run_program()
   ...time consuming execution...

def Exit_gracefully(signal, frame):
    ... log exiting information ...
    ... close any open files ...
    sys.exit(0)

if __name__ == '__main__':
    signal.signal(signal.SIGINT, Exit_gracefully)
    run_program()
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是我希望能够在捕获SIGINT时暂停执行,提示用户是否真的想要退出,如果他们决定不想退出,则继续在run_program()中停止.

我能想到这样做的唯一方法是在一个单独的线程中运行程序,保持主线程等待它并准备捕获SIGINT.如果用户想要退出主线程可以做清理并杀死子线程.

有更简单的方法吗?

python signals copy-paste sigint

34
推荐指数
2
解决办法
6万
查看次数

标签 统计

copy-paste ×1

python ×1

sigint ×1

signals ×1