我有以下小應用程序。在Windows 7QProcess卡住了
#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;
}
與MinGW的編譯器運行的Qt儘管一切努力,運行此程序後,我得到的唯一輸出是:
QProcess: Destroyed while process still running
我不知道我做錯了什麼,或者我錯過了一些東西。我改變了waitForFinished
電話waitForReadyRead
我自己設置了閱讀頻道,都無濟於事。現在我正式需要幫助,因爲我不想實施我自己的grep。
注:我已經有了與Python的子進程模塊相同的問題。至少他們的文件在這個問題上已經夠清楚了。建議的替代方案實現了這種主動迴路。 (http://docs.python.org/library/subprocess.html#subprocess.Popen.wait) – 2011-02-25 15:43:29
謝謝,這個確切的代碼做的工作 – Sambatyon 2011-02-25 16:12:04