Я пытаюсь управлять простой программой на С ++ через python. Программа работает, предлагая пользователю ввести данные. Подсказки не обязательно заканчиваются. Я хотел бы знать, есть ли способ сказать из python, что программа на c ++ больше не генерирует выходные данные и переключилась на запрос ввода.
Вот простой пример:
C ++
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "Enter a number ";
cin >> x;
cout << x << " squared = " << x * x << endl;
}
питон
#! /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 ++, но это не помогло)
Спасибо за любые ответы.