发送输入并使用不同的线程输出到exe文件

时间:2013-10-09 15:53:36

标签: python multithreading subprocess pipe

我正在尝试编写一个脚本来发送文本并从给定的.exe文件中获取输出。 .exe文件将其脚本将发送到其输入的内容发送到其输出。 发送输入和读取输出应使用不同的线程完成。

import subprocess
proc=subprocess.Popen(['file.exe'],stderr=subprocess.STDOUT, stdout=subprocess.PIPE, stdin=subprocess.PIPE)

stdout, stdin = proc.communicate()
proc.stdin.write(text)
proc.stdin.close()
result=proc.stdout.read()
print result

现在我找不到使用单独线程进行通信的方法。

感谢任何指导或帮助。

1 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情。您在主线程中发送输入并在另一个中获取输出。

class Exe(threading.Thread):
def __init__(self, text=""):
    self.text = text
    self.stdout = None
    self.stderr = None
    threading.Thread.__init__(self)

def run(self):
    p = subprocess.Popen(['file.exe'],stdout=subprocess.PIPE,stdin=subprocess.PIPE)
    self.stdout, self.stderr = p.communicate(self.text)

text = "input"
exe = Exe(text)
exe.start()
exe.join()
print exe.stdout
return 0