gpt4 book ai didi

sqlite - 在运行子进程时按 Ctrl+C 终止 Python 程序

转载 作者:行者123 更新时间:2023-12-05 08:00:54 26 4
gpt4 key购买 nike

我有一个用 Python(Linux 上的版本 2.7.3)编写的小程序,它在循环中对许多文件运行外部命令。它使用 subprocess.check_output 执行此操作,然后将输出中的数据写入 Sqlite3 数据库。我有两个问题:

  1. 当我按 Ctrl+C 停止程序时,所发生的只是正在执行的子进程被终止,主程序继续下一次迭代并启动下一个子进程。

  2. 如果我从另一个窗口使用 kill -9 强制终止它,它会退出,但数据库文件不包含任何更改。

我已经阅读了几个小时并尝试了各种东西,包括信号处理程序、try/finally 等等。到目前为止,我无法做应该非常简单的事情。

那么,我怎样才能让 Python 程序接受 Ctrl+C 并干净地终止,以便其子进程结束并正确保存其 sqlite3 数据库?

(只是补充一点,如果程序运行完成,它会干净地退出并且数据库文件会按预期更新)

最佳答案

这里有关于理解杀死子进程的非常好的讨论/资源:How does Ctrl-C terminate a child process?

sql 问题(没有更多信息)听起来像是在不成熟地终止进程时中断进程提交数据

关于sqlite - 在运行子进程时按 Ctrl+C 终止 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com