import subprocess
child = subprocess.Popen(['python', 'simple.py'], stdin=subprocess.PIPE)
child.communicate('Alice')
我知道你可以通过通信与执行的脚本进行交流。
如何检查脚本“simple.py”是否正在请求用户输入?
simple.py可能会要求5-10个用户输入,因此仅硬编码communicate
是不够的。
[编辑]:希望在脚本运行时解析stdout并与脚本进行通信。
while True:
if child.get_stdout() == '?':
# send user input
/proc/<pid>/wchan
中检查等待通道,或者使用ptrace
/strace
或其他你喜欢的方法跟踪子进程。 - Andrea Corbellini