我正在编写应该通过 Qprocess 创建外部进程的 QCoreApplication。
我刚刚注意到,即使waitForStarted()
调用了并且进程状态是Running
在事件处理程序执行之前,外部进程也不会启动,直到exec()
在 QCoreApplication 上调用该方法。
也就是说,是否可以将例程的执行推迟到事件处理开始(在其中实例化 QProcess),或者唯一可行的方法是创建一次性 QTimer?
经过短暂的调查,它出现了方法QCoreApplication::processEvents()处理调用线程的所有未决事件。在下面的代码中
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QProcess abc(....);
abc.start(...);
app.processEvents();
//////////////////////////////////////////////////////
// is the process really running ? //
//////////////////////////////////////////////////////
return app.exec();
}
该部分需要这种方法is-the-process-really-running
才能让它找到启动并运行的abc进程。否则abc将在事件循环处理启动事件时启动。