如何判断C++程序何时等待输入?
我正在尝试通过Python控制一个简单的C++程序。这个程序会提示用户输入,但这些提示不一定以换行符结束。我想知道有没有办法从Python中判断C++程序是否不再输出内容,并且已经切换到请求输入的状态。
这里有一个简单的例子:
C++代码:
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "Enter a number ";
cin >> x;
cout << x << " squared = " << x * x << endl;
}
Python代码:
#! /usr/bin/python
import subprocess, sys
dproc = subprocess.Popen('./y', stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while (True) :
dout = dproc.stdout.read(1)
sys.stdout.write(dout)
dproc.stdin.write("22\n")
这种方法有点效果,但它对dproc.stdin的写入太多了。我想要的是一种方法,可以从dproc.stdout读取所有内容,直到程序准备好接收输入,然后再写入dproc.stdout。
如果可能的话,我希望在不修改C++代码的情况下做到这一点。(不过,我尝试过在C++那边调整缓冲设置,但似乎没有帮助)
感谢任何回复。