假设有一个程序产生具有不同输入的不同输出,并且如果输入是特定值则终止。例如,它可以用C++编写:Python中的进程 - 获取非终止进程的标准输出
int main() {
int i;
while(true) {
cin >> i;
if (i) cout << i << endl;
else break;
}
return 0;
}
在这个程序中,如果你输入一个整数,它会把它打印在屏幕上。程序永远不会终止,直到您输入0
。
那么我怎样才能用Python立即获取stdin对应的stdin?也就是说,如果我给标准输入写'1',我会希望立即从标准输出读取一个'1',而这个过程还没有结束。
结论:有两种实现方法。
使用
subprocess.Popen
,和治疗标准输出或子进程的标准输入作为一个文件,写入标准输入(需要'\n'
),并与readline
使用库Pexpect的从标准输出读取。
你就不能读取子进程的标准输出? –
对于我们这些不读C++的人,你应该提到输出的内容。具体来说,是否以换行符结束? –
如果使用'subprocess.Popen'模块,并直接读取,它将一直等待,什么都不做。 – Moonshile