2008-11-06 19 views
0

我正在写一个QCoreApplication,通过Qprocess创建一个外部进程。关于QCoreApplication和QProcess

我刚刚注意到,即使waitForStarted()被调用,进程状态是Running事件处理程序执行之前,外部过程,直到exec()方法在QCoreApplication调用不启动

也就是说,是否有可能推迟执行例程到事件处理启动(用于实例化QProcess),或者唯一可行的方法是创建一个一次性QTimer?

+0

问题不明确 – PiedPiper 2008-11-06 10:18:08

回答

1

经过简短的调查后,它出来了方法QCoreApplication :: processEvents()处理调用线程的所有未决事件。在下面的代码是所必需的部分is-the-process-really-running

int main(int argc, char *argv[]) 
{ 
    QCoreApplication app(argc, argv); 

    QProcess abc(....); 
    abc.start(...); 

    app.processEvents(); 

    ////////////////////////////////////////////////////// 
    // is the process really running ? // 
    ////////////////////////////////////////////////////// 

    return app.exec(); 
} 

这样的方法让它找到ABC过程启动和运行。否则abc将在事件循环处理启动事件时启动。