【发布时间】:2014-01-29 09:23:20
【问题描述】:
当我直接在终端中运行时:
echo "useful"; sleep 10 &> /tmp/out.txt & echo "more";
在后台进行睡眠时,我得到了两个输出。我对 Popen (python 2.7) 也有同样的行为:
p = Popen('echo "useful"; sleep 10 &> /tmp/out.txt & echo "more";', shell = True, stdout = PIPE, stderr = PIPE)
print p.communicate()
据我了解,具有重定向 stdout 和 stderr 的后台进程可以实现这一点,但事实并非如此;我得等着睡觉。谁能解释一下?
我需要其他输出,因此在 Python 中更改 stdout/stderr 参数不是解决方案。
编辑:我现在明白我想要的行为(获取输出但在没有更多输出时停止而不是在完成时停止)在 Python 中是不可能的。
但是,当使用 ssh 时,该行为或多或少会自动出现:
ssh 1.2.3.4 "echo \'useful\'; cd ~/dicp/python; nohup sleep 5 &> /tmp/out.txt & echo \'more\';"
(我可以在没有密码的情况下 ssh 到这个地址)。因此,围绕 Python 工作并非完全不可能;现在我需要一种不使用 ssh 的方法...
【问题讨论】:
标签: python background-process popen output-redirect