QProcess中的start和startDetached兩種啟動方式的區別
阿新 • • 發佈:2019-02-11
一、啟動外部程式的兩種方式:
(1)一體式:void QProcess::start(const QString & program, const QStringList & arguments, OpenMode mode = ReadWrite)
外部程式啟動後,將隨主程式的退出而退出。(2)分離式:void QProcess::startDetached(const QString & program, const QStringList & arguments, const QString & workingDirectory = QString(), qint64 * pid = 0
外部程式啟動後,當主程式退出時並不退出,而是繼續執行。
二、Synchronous Process API (同步程序API)
QProcess提供了一系列的函式以提到事件迴圈來完成同步操作:
(1)waitForStarted() : 阻塞,直到外部程式啟動
(2)waitForReadyRead() : 阻塞,直到輸出通道中的新資料可讀
(3)waitForBytesWritten() : 阻塞,直到輸入通道中的資料被寫入
(4)waitForFinished() : 阻塞,直到外部程式結束
如果在主執行緒(QApplication::exec())中呼叫這些函式,可能會造成當前使用者介面不響應。