我对QProcess有一个奇怪的问题。我在Ubuntu 12.04.5 LTS上运行Qt 4.8.1(在基于HP工作站Xeon的PC上)。以下位代码在PC1上正确执行和终止(过程大约需要20秒才能完成)。我将代码转到PC2,也在Ubuntu 12.04.5 LTS(OSX Mavericks上的VMWare)上运行Qt 4.8.1,并且永远不会发出完成的(int)信号(qDebug打印等待永远,并且看起来比on更快正确工作的PC)。任何人都知道问题可能是什么? run()函数通过QPushButton信号调用,并且所有插槽都在PC1上正确执行,但从不在PC2上执行。
void VaredWindow::run()
{
//! update the GUI to let the user know we're running now
txtOutput->clear();
txtStatus->setText(QString("Running ") + appSelect->currentText() + QString("..."));
txtStatus->repaint();
txtOutput->repaint();
qApp->processEvents();
//! create and start up the app process
proc = new QProcess(this);
int appNum = appSelect->currentIndex();
QString app = getAppName(appNum);
QStringList args = getAppArgs(appNum);
connect(proc, SIGNAL(readyReadStandardOutput()), this, SLOT(readStdout()));
connect(proc, SIGNAL(readyReadStandardError()), this, SLOT(readStderror()));
connect(proc, SIGNAL(finished(int)), this, SLOT(procFinished()));
QApplication::setOverrideCursor(Qt::WaitCursor); // make a spinny thingy
proc->setWorkingDirectory(QApplication::applicationDirPath());
proc->start(app, args);
while (!proc->waitForFinished(500))
{
qDebug() << "Waiting";
}
}
另外值得注意的是,它在两台机器上运行正常,两台机器上的奇怪行为如下: