#include <cstdio>
#include <QtCore/QProcess>
int main (int argc, char** argv) {
// if we remove 3 following lines, the problem described below doesn't exists!!
QProcess process;
process.start ("asdqwe"); // doesn't matter what we try to execute here.
process.waitForStarted (1000);
while (true) {
char buf[100];
if (scanf ("%s", buf) == EOF) { // it looks like stdin is closed!
printf("FAIL\n");
return 1;
}
printf ("%s\n", buf);
}
return 0;
}
Этот код является всего лишь фрагментом, чтобы показать проблему. В полном приложении мне нужно чтение/запись связи с процессом.Почему эта программа не работает (иногда)?
я скомпилировать его с:
g++ -o out ./main.cpp -I /usr/include/qt4/ -lQtCore
И выполнить его из Баш командной строки в терминале.
Почему эта программа иногда печатает FAIL и иногда остается в цикле?
Редактировать: Это не вопрос о сканировании/печати. Та же проблема, если я использую iostreams + string. Этот вопрос касается взаимодействия QProcess с файловыми дескрипторами родительского процесса.
All код показан. Возьмите его, скомпилируйте и запустите. –
... и вы увидите странное поведение (по крайней мере, под Linux) –
Ошибка была включена. исправлено. –