Мне нужно открыть подпроцесс, используя popen, процесс будет постоянно запрашивать ввод пользователя ... Основной процесс должен отправить эти данные по каналу.Непрерывно записывайте в подпроцесс, используя popen в C++
Это моя первая попытка:
FILE *in;
char buff[1024];
if(!(in = popen("cd FIX/fix2/src; java -cp .:./* com.fix.bot", "w"))){
return 1;
}
while(1){
char buffer[] = { 'x' };
fwrite(buffer, sizeof(char), sizeof(buffer), in);
cout << "Wrote!" << endl;
usleep(1000000);
}
Однако данные не отправляются! Мне нужно закрыть трубу с помощью pclose(), чтобы данные записывались в процесс. Как я могу обеспечить запись данных без необходимости закрывать трубу каждый раз?
Возможно ли, что ваше приложение ищет вход, завершенный с помощью \ n? Поскольку вы не отправляете LF прямо сейчас ... –
Не забудьте проверить результат 'fwrite()' Я не думаю, что он гарантирует запись всего, что вы запрашиваете. Обычно это происходит, но вам нужно проверить. –