2008-11-06 37 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將在事件循環處理啓動事件時啓動。