У меня есть простая программа на С++, которую я пытаюсь выполнить через python script. (Я очень новичок в написании сценариев), и у меня проблемы с чтением выходных данных через трубу. Из того, что я видел, похоже, что readline() не будет работать без EOF, но я хочу иметь возможность читать в середине программы и отвечать script на то, что выводится. Вместо чтения вывода он просто зависает python script:
#!/usr/bin/env python
import subprocess
def callRandomNumber():
print "Running the random guesser"
rng=subprocess.Popen("./randomNumber", stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
i=50
rng.stdin.write("%d\n" % i)
output=rng.stdout.readline()
output=rng.stdout.readline()
callRandomNumber()
и файл С++, который генерирует случайное число от одного до 100, затем проверяет догадывание пользователей, пока они не угадают правильно
#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
cout<<"This program generates a random number from 1 to 100 and asks the user to enter guesses until they succuessfully guess the number. It then tells the user how many guesses it took them"<<endl;
srand(time(NULL));
int num=rand()%100;
int guessCount=0;
int guess=-1;
cout<<"Please enter a number: ";
cin>>guess;
while(guess!=num){
if(guess>num){cout<<"That guess is too high. Please guess again: ";}
else{cout<<"That guess is too low. Please guess again: ";}
cin>>guess;
guessCount++;
}
cout<<"Congratulations! You solved it in "<<guessCount<<" guesses!"<<endl;
return 0;
}
конечная цель состоит в том, чтобы script решить проблему с двоичным поиском, но на данный момент я просто хочу иметь возможность читать строку, не будучи концом файла