0

我正在编写应该通过 Qprocess 创建外部进程的 QCoreApplication。

我刚刚注意到,即使waitForStarted()调用了并且进程状态是Running在事件处理程序执行之前,外部进程也不会启动,直到exec()在 QCoreApplication 上调用该方法。

也就是说,是否可以将例程的执行推迟到事件处理开始(在其中实例化 QProcess),或者唯一可行的方法是创建一次性 QTimer?

4

1 回答 1

1

经过短暂的调查,它出现了方法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将在事件循环处理启动事件时启动。

于 2008-11-06T13:31:56.777 回答