Python 当两个子进程从stdin读取时,我的程序不响应
我有一个C程序,在运行时需要一些控制信息。这些信息将由我的python程序传递。我首先测试这个,它工作得很好Python 当两个子进程从stdin读取时,我的程序不响应,python,subprocess,stdin,Python,Subprocess,Stdin,我有一个C程序,在运行时需要一些控制信息。这些信息将由我的python程序传递。我首先测试这个,它工作得很好 from subprocess import PIPE import subprocess cpro = ['./a_pass','2','8','7'] #2,8,7 are some parameters for init p1 = subprocess.Popen(cpro,stdout=PIPE, stdin=PIPE) #p2 = subprocess.Pope
from subprocess import PIPE
import subprocess
cpro = ['./a_pass','2','8','7'] #2,8,7 are some parameters for init
p1 = subprocess.Popen(cpro,stdout=PIPE, stdin=PIPE)
#p2 = subprocess.Popen(cpro,stdout=PIPE, stdin=PIPE)
f1 = open('bdt.100','r') #control information
commands = f1.read()
out1 = p1.communicate(commands)[0] #get the c program output
#out2 = p2.communicate(commands)[0]
print out1
print '--------------'
#print out2
问题是当我打开评论时。我试图测试stdin中的这些信息是否可以通过两个进程读取。但是,我的python程序在执行时没有响应。它就挂在那里。我猜原因是两个子进程为读取stdin而斗争。我如何控制他们和谐地工作
Bst问候您
更新
我将我的代码更改为此,它可以工作:
p1 = subprocess.Popen(passOne,stdout=PIPE, stdin=PIPE)
out1 = p1.communicate(commands)[0]
p2 = subprocess.Popen(failOne,stdout=PIPE, stdin=PIPE)
out2 = p2.communicate(commands)[0]
我想说些什么,但我能感觉到发生了什么。因此,我只是在代码中说明了如何在不进行更多分析的情况下解决问题。请原谅。我不认为这是你的问题——因此你的程序是一个接一个地运行的,而不是同时运行的。我猜第二个进程并不是因为某种原因而终止的。还值得注意的是,您应该使用它来打开文件-它更可读,并且可以确保正确地关闭文件(即使在异常情况下)。@Lattyware但我使用相同的init参数和控制信息运行相同的C程序。为什么它们会导致不同的结果?我想知道,在子进程1读取stdin之后,当子进程2开始读取stdin时,stdin是什么样子的?这在很大程度上取决于您正在运行的进程是做什么的。您是否尝试过使用另一个您知道会起作用的流程(例如
ls
)并查看是否存在任何问题?下次您还可以收集子流程的标准错误并打印此错误。可以提供有用的见解:)