我正在使用一对Python程序,其中一个程序应该调用第二个程序。
但是这应该以第一个程序使第二个程序成为守护进程的方式完成(或在后台运行),然后退出,而不等待第二个程序结束。
在Python中是否可能实现这一点?
我一直在研究os.fork、subprocess模块,但我很困惑如何正确地实现这一点...
我正在使用一对Python程序,其中一个程序应该调用第二个程序。
但是这应该以第一个程序使第二个程序成为守护进程的方式完成(或在后台运行),然后退出,而不等待第二个程序结束。
在Python中是否可能实现这一点?
我一直在研究os.fork、subprocess模块,但我很困惑如何正确地实现这一点...
你可以使用subprocess.Popen
来实现:
import subprocess
cmd = ['/usr/bin/python', '/path/to/my/second/pythonscript.py']
subprocess.Popen(cmd)
如果你想将 stdout
和 stderr
重定向到其他地方,你可以通过将 stdout=<file_obj>
传递给 Popen
构造函数来实现。
Popen
将执行子进程并将控制权返还给您的程序继续运行。 但是,这并不涉及处理信号(特别是,在您的背景进程完成之前用户退出其Shell时收到的SIGHUP信号)或断开与stdin、stderr、stdout和在调用Popen
时打开的任何其他文件描述符的连接。
Popen
接受一个参数列表。我会编辑我的回答以澄清。 - Rob Wouterssubprocess.Popen(cmd, stdout=sys.stdout, stderr=sys.stderr)
来获得实时输出吗?谢谢。 - Brandt