【发布时间】:2016-06-15 13:06:52
【问题描述】:
import subprocess
child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE)
child.communicate('Alice')
我知道你可以通过通信与执行的脚本通信 如何检查脚本“simple.py”是否要求用户输入?
simple.py 可以要求 5-10 个用户输入,所以简单地硬编码 communicate 是不够的。
[编辑]:想要在脚本运行时解析标准输出并与脚本通信
while True:
if child.get_stdout() == '?':
# send user input
【问题讨论】:
-
你不能。程序不要求输入;他们等着。
-
我怎么知道他们是否在等待它......(询问/等待)我看不出区别
-
你不能。当它等待输入时,它什么也不做,直到它得到它。什么都不做的原因有很多,所以没有办法知道它是专门在等待输入的。
-
我知道它在等待用户输入的标准输出。当脚本打印出来时,我如何获得标准输出?
-
你可以在
/proc/<pid>/wchan查看等待通道,也可以用ptrace/strace/随便你跟踪子进程。
标签: python subprocess