1. 程式人生 > >QProcess中的start和startDetached兩種啟動方式的區別

QProcess中的start和startDetached兩種啟動方式的區別

一、啟動外部程式的兩種方式:

(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())中呼叫這些函式,可能會造成當前使用者介面不響應。