【发布时间】:2011-02-25 11:27:46
【问题描述】:
我有以下小应用程序。在 Windows 7 中使用 MinGW 编译器运行 Qt
#include <QProcess>
#include <QStringList>
#include <iostream>
const int64_t kBuffSize = 2048;
int main(int argc, char *argv[]) {
QProcess grep;
QStringList params;
params << "-e" << "\".*pas'\"" << "\"Path to file\"";
grep.start("C:\\MinGW\\msys\\1.0\\bin\\grep.exe", params);
grep.setReadChannel(QProcess::StandardOutput);
if (!grep.waitForFinished()) {
if (grep.state() == QProcess::Running)
grep.kill();
return 1;
}
std::cout << "ready to read" << std::endl;
char buffer[kBuffSize];
while (grep.readLine(buffer, kBuffSize) > 0) {
std::cout << buffer;
}
if (grep.state() == QProcess::Running)
grep.kill();
return 0;
}
尽管付出了所有努力,运行此程序后,我得到的唯一输出是:
QProcess: Destroyed while process still running
我不知道我做错了什么,或者我错过了什么。我已将waitForFinished 呼叫更改为waitForReadyRead 我自己设置了读取通道,但均无济于事。现在我正式需要帮助,因为我不想实现自己的 grep。
【问题讨论】: