#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
并从终端中的 bash 命令行执行它。
为什么这个程序有时会打印失败,有时会保持循环?
编辑: 这不是关于 scan/printf 的问题。同样的问题是如果我使用 iostreams + string。这个问题是关于 QProcess 与父进程的文件描述符的交互。