我有一个用 Python(Linux 上的 2.7.3 版)编写的小程序,它在循环中对多个文件运行外部命令。它使用它执行此操作subprocess.check_output
,然后将输出中的数据写入 Sqlite3 数据库。我有两个问题:
当我
Ctrl+C
停止程序时,所发生的只是正在执行的子进程被杀死,主程序继续下一次迭代并启动下一个子进程。如果我从另一个窗口强制杀死它,
kill -9
它会退出,但数据库文件不包含任何更改。
我已经阅读了几个小时并尝试了各种东西,包括信号处理程序,try
/finally
等等。到目前为止,我一直无法做应该很简单的事情。
那么,如何让 Python 程序接受 aCtrl+C
并干净地终止,以便其子进程结束并正确保存其 sqlite3 数据库?
(只是补充一点,如果程序要运行完成,它确实会干净地退出并且数据库文件会按预期更新)