我正在编写一个Python脚本,它启动了多个进程和数据库连接。偶尔我想用Ctrl+C信号来终止脚本,并且我想进行一些清理工作。
在Perl中,我会这样做:
如何在Python中实现这个的类似功能?
在Perl中,我会这样做:
$SIG{'INT'} = 'exit_gracefully';
sub exit_gracefully {
print "Caught ^C \n";
exit (0);
}
如何在Python中实现这个的类似功能?
./program.py > output.log
。当你按下 Ctrl-C 键时,希望程序能够正常退出,并记录所有数据文件已经被刷新并标记为干净,以确认它们处于已知的良好状态。但是,Ctrl-C 会向管道中的所有进程发送 SIGINT 信号,因此 shell 可能会在 program.py 完成打印最终日志之前关闭 STDOUT(现在是 "output.log")。Python 将会抱怨,“close failed in file object destructor: Error in sys.excepthook:”。因此,你需要捕获信号来实现优雅的程序退出。 - Noah Spurrier