0

我正在制作一个python程序,比如说A。用于监控python脚本B

当 python 程序关闭时,有一个通过 atexit.register() 注册的退出函数,要进行一些清理,它需要重新运行 python 脚本 B,即使 python 脚本 A 已关闭,它也需要保持运行。

Python 脚本 B 不能是 Python 脚本 A 的一部分。

我需要做些什么来实现这一点,我已经尝试了一些方法,比如使用 subprocess.Popen(programBCommand),但这似乎不起作用,因为它会阻止 A 关闭。

我正在使用 Debian 操作系统

4

1 回答 1

0

如果脚本 B 需要由脚本 A 启动,并且无论 A 是否完成都继续运行(并且不阻止 A 退出),那么您正在考虑编写一个 UNIX 守护进程。最简单的方法是使用该python-daemon模块使脚本 B 自己守护进程,而无需对更改工作目录、与父级分离等细节进行大量明确的处理。

注意: UNIX 风格的守护进程与启动它的进程分离,因此您无法通过Popen对象直接从脚本 A 监视脚本 B(它似乎立即退出)。您需要安排一些其他形式的跟踪,例如通过某种间接方法识别或传达守护进程的 pid 到脚本 A。

于 2015-10-14T19:38:41.580 回答