Comando Python: Catch Ctrl-C. Prompt "realmente quer sair (y / n)", retomar a execução se não houver
Eu tenho um programa que pode ter uma longa execução. No módulo principal, tenho o seguinte:
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()
Isso funciona bem, mas eu gostaria da possibilidade de pausar a execução ao capturar o SIGINT, avisando o usuário se eles realmente gostariam de sair, e continuando de onde parei em run_program () se eles decidirem que não querem sair.
A única maneira que posso pensar em fazer isso é executar o programa em um thread separado, mantendo o thread principal esperando por ele e pronto para capturar o SIGINT. Se o usuário quiser sair do thread principal pode fazer a limpeza e matar o segmento filho.
Existe uma maneira mais simples?