python中的进程-获取非终止进程的标准输出

python中的进程-获取非终止进程的标准输出,python,subprocess,stdout,Python,Subprocess,Stdout,假设有一个程序,它用不同的输入产生不同的输出,如果输入是一个特定的值,它就会终止。例如,它可以用C++编写: int main() { int i; while(true) { cin >> i; if (i) cout << i << endl; else break; } return 0; } intmain(){ int i; while(true){ cin>>i; 如

假设有一个程序,它用不同的输入产生不同的输出,如果输入是一个特定的值,它就会终止。例如,它可以用C++编写:

int main() {
    int i;
    while(true) {
        cin >> i;
        if (i) cout << i << endl;
        else break;
    }
    return 0;
}
intmain(){
int i;
while(true){
cin>>i;

如果(i)不能使用
subprocess.Popen()


你能不能只看一下子过程的STDUT?对于那些不读C++的人来说,你应该提到输出的样子,具体来说,它是用新行结尾的吗?如果使用<代码>子过程。Popen < /C>模块,直接阅读,它会一直等待,什么也不做。不要把答案放进你的问题。你可以自己发布答案。如果您愿意,则可能存在(在本例中,由于
endl
上的隐式刷新,因此没有)。在父级(您的脚本)中,可以使用
p.stdin.flush()
或Python 3上的
bufsize=1
修复后者,其中
bufsize
默认为非零。
>>> import subprocess
>>> p = subprocess.Popen(['/your/cpp/program'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
>>> p.stdin.write('1\n')
>>> p.stdout.readline()
'1\n'
>>> p.stdin.write('10\n')
>>> p.stdout.readline()
'10\n'
>>> p.stdin.write('0\n')
>>> p.stdout.readline()
''
>>> p.wait()
0