将python子进程调用为守护进程并退出

Jav*_* C. 11 python daemon python-2.x

我正在使用一对python程序,其中一个应该调用第二个.

但是这应该以第一个程序使第二个程序成为守护程序(或在后台进程中运行),然后退出而不等待第二个程序结束的方式完成.

这在Python中可行吗?

我一直在看os.fork,子进程模块,但我很困惑,因为正确的方法来实现这个...

Rob*_*ers 12

你可以使用subprocess.Popen这个:

import subprocess

cmd = ['/usr/bin/python', '/path/to/my/second/pythonscript.py']
subprocess.Popen(cmd)
Run Code Online (Sandbox Code Playgroud)

您可能想要重定向stdout并在stderr某处,您可以通过传递stdout=<file_obj>Popen构造函数来实现.


Dav*_*ave 8

"守护进程"具有比"后台进程"更具体的定义.默认情况下,Popen将执行子进程并将控制权交还给程序以继续运行.但是,这没有说明处理信号(特别是,如果用户在后台进程完成之前退出shell)或断开stdin,stderr,stdout以及在您调用时打开的任何其他文件描述符Popen.如果你真的想要一个守护进程,你应该使用python-daemon模块,这是PEP 3143的一个实现.这会照顾你不想考虑的重要部分.