当父进程在python中终止时如何避免进程终止

Posted

技术标签:

【中文标题】当父进程在python中终止时如何避免进程终止【英文标题】:How to avoid process termination when parent process terminates in python 【发布时间】:2014-06-22 19:27:06 【问题描述】:

我有一个在 linux 上运行的 python 守护程序。我正在实现以这种方式工作的自动更新功能:

    检测到新版本时,应用会使用 subprocess.call 调用更新程序脚本。 子进程(实际上是更新脚本)停止守护进程 由于守护程序已停止,更新程序脚本也会终止:/

所以我的问题是如何以不依赖于父进程的方式启动更新程序脚本。换句话说,我不希望父进程终止导致子进程终止。

环境:Linux mint 16

Python 3.3

谢谢

【问题讨论】:

看看***.com/questions/473620/…和pypi.python.org/pypi/daemonize。 【参考方案1】:

你可以按照以下方式做一些事情:

from subprocess import Popen

updater = ['/usr/bin/python', 'PATH TO/updater_script.py', '&']
Popen(updater)

更新程序不会受到守护进程关闭的影响。

【讨论】:

谢谢,但没用。父进程停止时子进程终止:( 我已经更新了我对可能有用的东西的回答......它看起来有点老套,但可能值得一试。 我也试过了。它也没有帮助。我发现的唯一方法是守护子进程。对于一个简单的任务来说,这有点开销,但它确实有效。还是谢谢 我很高兴你找到了解决方案,奇怪的是我发布的方法在测试程序中起作用......

以上是关于当父进程在python中终止时如何避免进程终止的主要内容,如果未能解决你的问题,请参考以下文章

僵尸进程和孤儿进程----概念

c++11的线程,怎么终止

Python多处理 - 产生的进程终止时主进程不会继续

如何终止使用 shell=True 启动的 python 子进程

Windows Internals 笔记——终止进程

如何在 Python 中终止我的子进程 [重复]