如何运行Python的子进程并将其留在后台

问题描述 投票:2回答:2

我看过很多关于我的主题的帖子,但实际上我没有找到解决问题的方法。我正在尝试在后台运行子流程,而不等待子流程执行。被调用的子进程是一个Shell脚本,它执行许多不同的操作。这是我的代码的一小部分:

print "Execute command:", full_command
subprocess.Popen(full_command, stdin=None, stdout=None, stderr=None, close_fds=True).communicate()
print "After subprocess"

而且我的问题是Python等到子进程。Popen完成它的工作。我读到,stdin(-out,-err)=没有人可以解决这个问题,但事实并非如此。另外close_fds = True,在这里没有帮助。

python subprocess popen
2个回答
7
投票

Popen.communicate documentation(强调我):

与进程交互:将数据发送到stdin。从stdout读取数据并stderr,直到到达文件末尾。 等待进程终止。可选输入参数应该是要发送给子级的字符串进程,如果没有数据发送给子进程,则为无。

如果您不想等待进程终止,那么就不要调用Popen.communicate

communicate

0
投票

可能是另一种实现方式,具有从github.com/hologram-io/hologram-python pppd.py文件中检查子过程输出一段时间的可选功能:

subprocess.Popen(full_command, close_fds=True)
© www.soinside.com 2019 - 2024. All rights reserved.