2013-10-09 6 views
0

텍스트를 보내고 지정된 .exe 파일에서 출력을받는 스크립트를 작성하려고합니다. .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 

이제 별도의 스레드를 사용하여 통신 할 수있는 방법을 찾을 수 없습니다.

모든 안내 또는 도움을 받으실 수 있습니다.

답변

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 
관련 문제