假设有一个程序用不同的输入产生不同的输出,如果输入是一个特定的值,则终止。例如,它可以用C++编写:
int main() {
int i;
while(true) {
cin >> i;
if (i) cout << i << endl;
else break;
}
return 0;
}在这个程序中,如果您输入一个整数,它将在屏幕上打印它。在输入0之前,程序永远不会终止。
那么如何用Python获取与stdin对应的stdout呢?也就是说,如果我在stdin中输入一个'1‘,我就会马上从stdout中获取一个'1’,而这个过程还没有结束。
结论:实现这一目标有两种途径。
subprocess.Popen,并将子进程的stdout或stdin视为文件,将其写入stdin (需要'\n'),并使用readline从stdout读取。发布于 2015-05-06 13:49:37
使用subprocess.Popen()
>>> 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()
0https://stackoverflow.com/questions/30077975
复制相似问题