在线程中无法将Python Popen写入stdin
|
我正在尝试编写一个程序,该程序分别同时读取和写入进程的std(out / in)。但是,似乎无法在线程中写入程序的stdin。这是相关的代码位:
import subprocess, threading, queue
def intoP(proc, que):
while True:
if proc.returncode is not None:
break
text = que.get().encode() + b\"\\n\"
print(repr(text)) # This works
proc.stdin.write(text) # This doesn\'t.
que = queue.Queue(-1)
proc = subprocess.Popen([\"cat\"], stdin=subprocess.PIPE)
threading.Thread(target=intoP, args=(proc, que)).start()
que.put(\"Hello, world!\")
怎么了,有没有办法解决?
我在Mac OSX上运行python 3.1.2,已确认它可以在python2.7中使用。
没有找到相关结果
已邀请:
2 个回复
剃摧庭峨僳
在
调用之后,您会如预期的那样看到“ Hello,world!\”打印到控制台(通过子进程)。
蓄荣糖些