我正在尝试通过 python 控制一个简单的 c++ 程序。该程序通过提示用户输入来工作。提示不一定是 endl 终止的。我想知道的是,是否有办法从 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++ 端玩缓冲,但似乎没有帮助)
感谢您的任何回复。