Potrzebuję otworzyć podproces za pomocą popenu, proces będzie ciągle prosić o dane wejściowe użytkownika ... Główny proces musi wysłać te dane przez potok.Ciągłe zapisywanie w podprocesie za pomocą popenu w C++
Jest to moja pierwsza próba:
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);
}
Jednak dane nie są wysyłane! Muszę zamknąć potok za pomocą pclose(), aby dane zostały zapisane w procesie. Jak mogę się upewnić, że dane są zapisywane bez konieczności zamykania rury za każdym razem?
Czy jest możliwe, że twoja aplikacja szuka danych wejściowych zakończonych \ n? Ponieważ nie wysyłasz teraz LF ... –
Nie zapomnij sprawdzić wyniku 'fwrite()' Nie sądzę, że to gwarantuje, że napiszesz wszystko, o co prosisz. Zwykle tak jest, ale musisz potwierdzić. –