<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # QProcess Class Reference ## [[QtCore](index.htm) module] 使用QProcess類,用來啟動外部程序,并與他們溝通。[More...](#details) 繼承[QIODevice](qiodevice.html)。 ### Types * `enum ExitStatus { NormalExit, CrashExit }` * `enum ProcessChannel { StandardOutput, StandardError }` * `enum ProcessChannelMode { SeparateChannels, MergedChannels, ForwardedChannels }` * `enum ProcessError { FailedToStart, Crashed, Timedout, ReadError, WriteError, UnknownError }` * `enum ProcessState { NotRunning, Starting, Running }` ### Methods * `__init__ (self, QObject?parent?=?None)` * `bool atEnd (self)` * `int bytesAvailable (self)` * `int bytesToWrite (self)` * `bool canReadLine (self)` * `close (self)` * `closeReadChannel (self, ProcessChannel?channel)` * `closeWriteChannel (self)` * `QStringList environment (self)` * `ProcessError error (self)` * `int exitCode (self)` * `ExitStatus exitStatus (self)` * `bool isSequential (self)` * `kill (self)` * `int pid (self)` * `ProcessChannelMode processChannelMode (self)` * `QProcessEnvironment processEnvironment (self)` * `QByteArray readAllStandardError (self)` * `QByteArray readAllStandardOutput (self)` * `ProcessChannel readChannel (self)` * `ProcessChannelMode readChannelMode (self)` * `str readData (self, int?maxlen)` * `setEnvironment (self, QStringList?environment)` * `setProcessChannelMode (self, ProcessChannelMode?mode)` * `setProcessEnvironment (self, QProcessEnvironment?environment)` * `setProcessState (self, ProcessState?state)` * `setReadChannel (self, ProcessChannel?channel)` * `setReadChannelMode (self, ProcessChannelMode?mode)` * `setStandardErrorFile (self, QString?fileName, QIODevice.OpenMode?mode?=?QIODevice.Truncate)` * `setStandardInputFile (self, QString?fileName)` * `setStandardOutputFile (self, QString?fileName, QIODevice.OpenMode?mode?=?QIODevice.Truncate)` * `setStandardOutputProcess (self, QProcess?destination)` * `setupChildProcess (self)` * `setWorkingDirectory (self, QString?dir)` * `start (self, QString?program, QStringList?arguments, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `start (self, QString?program, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite)` * `ProcessState state (self)` * `terminate (self)` * `bool waitForBytesWritten (self, int?msecs?=?30000)` * `bool waitForFinished (self, int?msecs?=?30000)` * `bool waitForReadyRead (self, int?msecs?=?30000)` * `bool waitForStarted (self, int?msecs?=?30000)` * `QString workingDirectory (self)` * `int writeData (self, str?data)` ### Static Methods * `int execute (QString?program, QStringList?arguments)` * `int execute (QString?program)` * `(bool, int?pid) startDetached (QString?program, QStringList?arguments, QString?workingDirectory)` * `bool startDetached (QString?program, QStringList?arguments)` * `bool startDetached (QString?program)` * `QStringList systemEnvironment ()` ### Qt Signals * `void error (QProcess::ProcessError)` * `void finished (int,QProcess::ExitStatus)` * `void finished (int)` * `void readyReadStandardError ()` * `void readyReadStandardOutput ()` * `void started ()` * `void stateChanged (QProcess::ProcessState)` * * * ## Detailed Description 使用QProcess類,用來啟動外部程序,并與他們溝通。 ### Running a Process 要啟動一個過程,傳遞你想要作為參數來運行程序的名稱和命令行參數[start](qprocess.html#start)( ) 。參數被作為一個單獨的字符串[QStringList](qstringlist.html)。 例如,下面的代碼片段使含有“風格”和“主題”中的參數列表中兩個項目的字符串運行在X11平臺上的Motif風格的模擬時鐘的例子: ``` [QObject](qobject.html) *parent; ... [QString](qstring.html) program = "./path/to/Qt/examples/widgets/analogclock"; [QStringList](qstringlist.html) arguments; arguments << "-style" << "motif"; QProcess *myProcess = new QProcess(parent); myProcess->start(program, arguments); ``` 另外,QProcess然后進入[Starting](qprocess.html#ProcessState-enum)狀態,當程序已經啟動,另外,QProcess進入[Running](qprocess.html#ProcessState-enum)狀態并發出[started](qprocess.html#started)( ) 。 另外,QProcess允許你把一個進程順序I / O設備。你可以寫信給從進程讀取,就像您使用訪問網絡連接[QTcpSocket](qtcpsocket.html)。然后,您可以通過調用寫入進程的標準輸入[write](qiodevice.html#write)( ) ,并通過調用讀取標準輸出[read](qiodevice.html#read)( )[readLine](qiodevice.html#readLine)()和[getChar](qiodevice.html#getChar)( ) 。因為它繼承[QIODevice](qiodevice.html),另外,QProcess也可以被用作輸入源[QXmlReader](qxmlreader.html)或者,用于產生數據,以使用被上傳[QFtp](qftp.html)。 **Note:**在VxWorks中, Windows CE和Symbian的,讀取和寫入的過程是不支持。 當進程退出,另外,QProcess重新進入[NotRunning](qprocess.html#ProcessState-enum)狀態(初始狀態) ,并且發射[finished](qprocess.html#finished)( ) 。 該[finished](qprocess.html#finished)( )信號提供了退出代碼和過程作為參數退出狀態,您也可以致電[exitCode](qprocess.html#exitCode)()來獲取完成的最后一個進程的退出代碼,[exitStatus](qprocess.html#exitStatus)()來獲取它的退出狀態。如果發生在任何時間點的誤差,另外,QProcess將發出的[error](qprocess.html#error)()信號。您也可以撥打[error](qprocess.html#error)()找到最后發生的錯誤的類型,[state](qprocess.html#state)()找到當前進程的狀態。 ### Communicating via Channels 流程有兩個預定義的輸出通道:標準輸出通道(`stdout`)定期提供控制臺輸出,標準錯誤通道(`stderr`)通常提供了由印刷過程中的錯誤。這些通道代表兩個獨立的數據流。你可以通過調用它們之間進行切換[setReadChannel](qprocess.html#setReadChannel)( ) 。另外,QProcess發出[readyRead](qiodevice.html#readyRead)( )時,數據可在當前的讀通道。它還發出[readyReadStandardOutput](qprocess.html#readyReadStandardOutput)()時,新的標準輸出數據是可用的,并且當新的標準誤差數據是可用的,[readyReadStandardError](qprocess.html#readyReadStandardError)()被發射。而不是調用[read](qiodevice.html#read)( )[readLine](qiodevice.html#readLine)() ,或[getChar](qiodevice.html#getChar)( ) ,您也可以通過調用讀取無論是從兩個通道的所有數據[readAllStandardOutput](qprocess.html#readAllStandardOutput)()或[readAllStandardError](qprocess.html#readAllStandardError)( ) 。 該術語的渠道可能會產生誤導。請注意,該過程的輸出通道對應QProcess中的_read_通道,而這個過程的輸入通道對應QProcess中的_write_頻道。這是因為我們閱讀使用QProcess中什么是過程的輸出,而我們寫什么成為過程的輸入。 另外,QProcess可以合并兩個輸出通道,使標準輸出,并從運行中的進程的標準誤差數據兩者都使用標準的輸出通道。通話[setProcessChannelMode](qprocess.html#setProcessChannelMode)( )與[MergedChannels](qprocess.html#ProcessChannelMode-enum)在開始之前,過程中activative此功能。你還可以在轉發運行過程的輸出到調用,主處理的選項,通過使[ForwardedChannels](qprocess.html#ProcessChannelMode-enum)作為參數。 某些過程中為了操作需要特殊環境設置。你可以通過調用設置環境變量為你的進程[setEnvironment](qprocess.html#setEnvironment)( ) 。要設置一個工作目錄,呼叫[setWorkingDirectory](qprocess.html#setWorkingDirectory)( ) 。默認情況下,進程在調用進程的當前工作目錄運行。 **Note:**在VxWorks中,通過渠道與進程進行通信,不支持。 **Note:**在Symbian ,設置環境或工作目錄是不支持。該工作目錄將永遠是正在運行的進程的私有目錄。 **Note:**QNX的,設置工作目錄可能會導致所有應用程序線程,除了使用QProcess調用者線程的,暫時凍結,由于在操作系統的限制。 ### Synchronous Process API 另外,QProcess提供了一組功能,允許它被用于沒有一個事件循環,通過掛起調用線程,直到某個信號發出: * [waitForStarted](qprocess.html#waitForStarted)() blocks until the process has started. * [waitForReadyRead](qprocess.html#waitForReadyRead)() blocks until new data is available for reading on the current read channel. * [waitForBytesWritten](qprocess.html#waitForBytesWritten)() blocks until one payload of data has been written to the process. * [waitForFinished](qprocess.html#waitForFinished)() blocks until the process has finished. 從主線程(即調用線程調用這些函數[QApplication.exec](qapplication.html#exec)( ) )可能會導致你的用戶界面凍結。 下面的示例運行`gzip`壓縮字符串“ Qt的巖石! ”無事件循環: ``` QProcess gzip; gzip.start("gzip", [QStringList](qstringlist.html)() << "-c"); if (!gzip.waitForStarted()) return false; gzip.write("Qt rocks!"); gzip.closeWriteChannel(); if (!gzip.waitForFinished()) return false; [QByteArray](qbytearray.html) result = gzip.readAll(); ``` ### Notes for Windows Users 有些Windows的命令(例如,`dir`)不提供單獨的應用程序,而由命令解釋程序本身。如果您嘗試使用QProcess中直接執行這些命令,它不會工作。一個可能的解決方案是要執行的命令解釋器本身(`cmd.exe`在某些Windows系統) ,并要求執行所需的命令解釋器。 ### Notes for VxWorks Users 另外,QProcess支持僅適用于RTP模式,并且只提供了有限的功能。當使用QProcess中啟動Qt應用程序,啟動的應用程序都必須有下面的代碼: * * * ## Type Documentation ``` QProcess.ExitStatus ``` 這個枚舉變量描述了不同的退出狀態[QProcess](qprocess.html)。 | Constant | Value | Description | | --- | --- | --- | | `QProcess.NormalExit` | `0` | 這個過程正常退出。 | | `QProcess.CrashExit` | `1` | 該進程崩潰。 | **See also** [exitStatus](qprocess.html#exitStatus)( ) 。 ``` QProcess.ProcessChannel ``` 該枚舉描述了所使用的運行過程中的工藝通道。通過這些值之一[setReadChannel](qprocess.html#setReadChannel)()設定的當前的讀通道[QProcess](qprocess.html)。 | Constant | Value | Description | | --- | --- | --- | | `QProcess.StandardOutput` | `0` | 正在運行的進程的標準輸出(stdout ) 。 | | `QProcess.StandardError` | `1` | 正在運行的進程的標準錯誤(錯誤) 。 | **See also** [setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QProcess.ProcessChannelMode ``` 這個枚舉變量描述的過程通道模式[QProcess](qprocess.html)。通過這些值之一[setProcessChannelMode](qprocess.html#setProcessChannelMode)( )來設置當前的讀通道模式。 | Constant | Value | Description | | --- | --- | --- | | `QProcess.SeparateChannels` | `0` | [QProcess](qprocess.html)管理正在運行的進程的輸出,保持標準輸出和標準錯誤的數據在單獨的內部緩沖區。您可以選擇[QProcess](qprocess.html)通過調用目前的讀取通道[setReadChannel](qprocess.html#setReadChannel)( ) 。這是缺省信道模式[QProcess](qprocess.html)。 | | `QProcess.MergedChannels` | `1` | [QProcess](qprocess.html)合并運行過程中的輸出到標準輸出通道(`stdout`) 。標準錯誤通道(`stderr`)將不會收到任何數據。標準輸出和正在運行的進程的標準錯誤數據交錯。 | | `QProcess.ForwardedChannels` | `2` | [QProcess](qprocess.html)運行過程中的轉發到主處理的輸出。任何事物的子進程寫入其標準輸出和標準錯誤將被寫入標準輸出和標準錯誤的主要過程。 | **See also** [setProcessChannelMode](qprocess.html#setProcessChannelMode)( ) 。 ``` QProcess.ProcessError ``` 這個枚舉變量描述了不同類型的錯誤報告由[QProcess](qprocess.html)。 | Constant | Value | Description | | --- | --- | --- | | `QProcess.FailedToStart` | `0` | 該進程無法啟動。無論是調用的程序丟失,或者您可能沒有足夠的權限來調用該程序。 | | `QProcess.Crashed` | `1` | 該工藝成功地墜毀后,開始一段時間。 | | `QProcess.Timedout` | `2` | 最后WAITFOR ... ( )函數超時。狀態[QProcess](qprocess.html)是不變的,你可以嘗試調用WAITFOR ... ( )一次。 | | `QProcess.WriteError` | `4` | 試圖寫入過程時發生錯誤。例如,該過程可能未運行,或者它可能已經關閉了其輸入通道。 | | `QProcess.ReadError` | `3` | 試圖從進程讀取時發生錯誤。例如,程序可能無法運行。 | | `QProcess.UnknownError` | `5` | 發生未知錯誤。這是默認的返回值[error](qprocess.html#error)( ) 。 | **See also** [error](qprocess.html#error)( ) 。 ``` QProcess.ProcessState ``` 該枚舉描述的不同狀態[QProcess](qprocess.html)。 | Constant | Value | Description | | --- | --- | --- | | `QProcess.NotRunning` | `0` | 該進程不運行。 | | `QProcess.Starting` | `1` | 該過程開始,但該程序尚未被調用。 | | `QProcess.Running` | `2` | 該進程正在運行,并已準備好進行讀取和寫入。 | **See also** [state](qprocess.html#state)( ) 。 * * * ## Method Documentation ``` QProcess.__init__ (self, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個[QProcess](qprocess.html)與給定對象_parent_。 ``` bool QProcess.atEnd (self) ``` 從重新實現[QIODevice.atEnd](qiodevice.html#atEnd)( ) 。 返回True如果進程不運行,并沒有更多的數據可供讀取,否則返回False 。 ``` int QProcess.bytesAvailable (self) ``` 從重新實現[QIODevice.bytesAvailable](qiodevice.html#bytesAvailable)( ) 。 ``` int QProcess.bytesToWrite (self) ``` 從重新實現[QIODevice.bytesToWrite](qiodevice.html#bytesToWrite)( ) 。 ``` bool QProcess.canReadLine (self) ``` 從重新實現[QIODevice.canReadLine](qiodevice.html#canReadLine)( ) 。 此功能可在當前的讀通道。 **See also** [readChannel](qprocess.html#readChannel)()和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QProcess.close (self) ``` 從重新實現[QIODevice.close](qiodevice.html#close)( ) 。 關閉所有與溝通的過程中,并殺死它。調用此函數后,[QProcess](qprocess.html)將不再放出[readyRead](qiodevice.html#readyRead)()和數據無法再被讀取或寫入。 ``` QProcess.closeReadChannel (self, ProcessChannel?channel) ``` 關閉讀取通道_channel_。調用此函數后,[QProcess](qprocess.html)將不再接收該通道上的數據。已接收到的任何數據仍然可以讀取。 調用這個函數來節省內存,如果你不感興趣,這個過程的輸出。 **See also** [closeWriteChannel](qprocess.html#closeWriteChannel)()和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QProcess.closeWriteChannel (self) ``` 附表的寫通道[QProcess](qprocess.html)被關閉。所有數據已被寫入的過程中的信道將關閉一次。調用該函數后,任何試圖寫入過程將失敗。 關閉寫通道是必要的讀取輸入數據,直到該通道已被關閉的程序。例如,程序“更”是用來在Unix和Windows控制臺顯示文本數據。但它不會顯示文本數據,直到[QProcess](qprocess.html)' s的寫入通道已經關閉。例如: ``` [QProcess](qprocess.html) more; more.start("more"); more.write("Text to display"); more.closeWriteChannel(); // QProcess will emit readyRead() once "more" starts printing ``` 寫通道被隱含地打開時[start](qprocess.html#start)()被調用。 **See also** [closeReadChannel](qprocess.html#closeReadChannel)( ) 。 ``` QStringList QProcess.environment (self) ``` 此功能已被棄用。 返回環境,[QProcess](qprocess.html)啟動進程的時候,還是一個空將使用[QStringList](qstringlist.html)如果沒有環境一直使用設置[setEnvironment](qprocess.html#setEnvironment)()或setEnvironmentHash () 。如果沒有環境已被設置,則調用進程的環境將被使用。 **Note:**環境設置將被忽略在Windows CE和Symbian ,因為有一個環境的概念。 **See also** [processEnvironment](qprocess.html#processEnvironment)( )[setEnvironment](qprocess.html#setEnvironment)()和[systemEnvironment](qprocess.html#systemEnvironment)( ) 。 ``` ProcessError QProcess.error (self) ``` [ 返回上次發生錯誤的類型。 ](qprocess.html#ProcessError-enum) [**See also**](qprocess.html#ProcessError-enum) [state](qprocess.html#state)( ) 。 ``` int QProcess.execute (QString?program, QStringList?arguments) ``` 啟動程序_program_與參數_arguments_在一個新的進程,等待它完成,然后返回該進程的退出代碼。新進程寫入控制臺的任何數據轉發到調用進程。 環境和工作目錄是從調用進程繼承。 在Windows上,包含空格的參數被包裝在引號中。 如果進程不能啟動,則返回-2。如果進程崩潰,則返回-1。否則,將返回進程的退出代碼。 ``` int QProcess.execute (QString?program) ``` 這是一個重載函數。 啟動程序_program_在一個新的進程。_program_是一個同時包含程序名和參數單個文本字符串。該參數由一個或多個空格隔開。 ``` int QProcess.exitCode (self) ``` 返回完成的最后一個進程的退出代碼。 ``` ExitStatus QProcess.exitStatus (self) ``` [ 返回完成的最后一個進程的退出狀態。 ](qprocess.html#ExitStatus-enum) [在Windows上,如果該進程是從另一個應用程序終止TerminateProcess ( )這個函數仍然會返回](qprocess.html#ExitStatus-enum)[NormalExit](qprocess.html#ExitStatus-enum)除非退出代碼小于0 。 這個函數是Qt 4.1中引入。 ``` bool QProcess.isSequential (self) ``` 從重新實現[QIODevice.isSequential](qiodevice.html#isSequential)( ) 。 ``` QProcess.kill (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void kill()`。 殺死當前進程,使其立即退出。 在Windows上,殺()使用TerminateProcess ,并在Unix和Mac OS X上, SIGKILL信號發送到進程。 在Symbian ,此功能需要平臺的安全能力`PowerMgmt`。如果不存在,該過程將恐慌與KERN - EXEC 46 。 **Note:**殺死其他進程正在運行的進程通常會導致Symbian的恐慌,由于平臺的安全性。 **See also** [Symbian Platform Security Requirements](index.htm)和[terminate](qprocess.html#terminate)( ) 。 ``` int QProcess.pid (self) ``` 返回運行過程中本機進程標識符(如果可用) 。如果沒有進程正在運行,則返回0 。 ``` ProcessChannelMode QProcess.processChannelMode (self) ``` [](qprocess.html#ProcessChannelMode-enum) [返回的渠道模式](qprocess.html#ProcessChannelMode-enum)[QProcess](qprocess.html)標準輸出和標準錯誤通道。 這個函數中引入了Qt 4.2中。 **See also** [setProcessChannelMode](qprocess.html#setProcessChannelMode)( )[ProcessChannelMode](qprocess.html#ProcessChannelMode-enum)和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QProcessEnvironment QProcess.processEnvironment (self) ``` [](qprocessenvironment.html) [返回環境,](qprocessenvironment.html)[QProcess](qprocess.html)將啟動一個進程時,或一個空的對象,如果沒有環境一直使用設置使用[setEnvironment](qprocess.html#setEnvironment)()或[setProcessEnvironment](qprocess.html#setProcessEnvironment)( ) 。如果沒有環境已被設置,則調用進程的環境將被使用。 **Note:**環境設置將被忽略在Windows CE上,因為有一個環境的概念。 此功能被引入Qt的4.6 。 **See also** [setProcessEnvironment](qprocess.html#setProcessEnvironment)( )[setEnvironment](qprocess.html#setEnvironment)()和[QProcessEnvironment.isEmpty](qprocessenvironment.html#isEmpty)( ) 。 ``` QByteArray QProcess.readAllStandardError (self) ``` [](qbytearray.html) [不管當前的讀通道,這個函數返回一個可用的所有數據處理的標準誤差為](qbytearray.html)[QByteArray](qbytearray.html)。 **See also** [readyReadStandardError](qprocess.html#readyReadStandardError)( )[readAllStandardOutput](qprocess.html#readAllStandardOutput)( )[readChannel](qprocess.html#readChannel)()和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QByteArray QProcess.readAllStandardOutput (self) ``` [](qbytearray.html) [不管當前的讀通道,這個函數返回一個可用的所有數據處理的標準輸出作為](qbytearray.html)[QByteArray](qbytearray.html)。 **See also** [readyReadStandardOutput](qprocess.html#readyReadStandardOutput)( )[readAllStandardError](qprocess.html#readAllStandardError)( )[readChannel](qprocess.html#readChannel)()和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` ProcessChannel QProcess.readChannel (self) ``` [](qprocess.html#ProcessChannel-enum) [返回的當前讀取通道](qprocess.html#ProcessChannel-enum)[QProcess](qprocess.html)。 **See also** [setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` ProcessChannelMode QProcess.readChannelMode (self) ``` [ ``` str QProcess.readData (self, int?maxlen) ``` ](qprocess.html#ProcessChannelMode-enum) [從重新實現](qprocess.html#ProcessChannelMode-enum)[QIODevice.readData](qiodevice.html#readData)( ) 。 ``` QProcess.setEnvironment (self, QStringList?environment) ``` 此功能已被棄用。 設置環境[QProcess](qprocess.html)啟動進程的時候會用_environment_指定它由key = value對的列表。 例如,下面的代碼添加`C:\\BIN`目錄的可執行文件的路徑列表(`PATHS`)在Windows上: ``` [QProcess](qprocess.html) process; [QStringList](qstringlist.html) env = [QProcess](qprocess.html).systemEnvironment(); env << "TMPDIR=C:\\MyApp\\temp"; // Add an environment variable env.replaceInStrings([QRegExp](qregexp.html)("^PATH=(.*)", [Qt](qt.html).CaseInsensitive), "PATH=\\1;C:\\Bin"); process.setEnvironment(env); process.start("myapp"); ``` **Note:**這個函數是比低效率[setProcessEnvironment](qprocess.html#setProcessEnvironment)()函數。 **See also** [environment](qprocess.html#environment)( )[setProcessEnvironment](qprocess.html#setProcessEnvironment)()和[systemEnvironment](qprocess.html#systemEnvironment)( ) 。 ``` QProcess.setProcessChannelMode (self, ProcessChannelMode?mode) ``` 設置的通道模式[QProcess](qprocess.html)標準輸出和標準錯誤通道到_mode_規定。此模式將在下一次使用[start](qprocess.html#start)()被調用。例如: ``` [QProcess](qprocess.html) builder; builder.setProcessChannelMode([QProcess](qprocess.html).MergedChannels); builder.start("make", [QStringList](qstringlist.html)() << "-j2"); if (!builder.waitForFinished()) qDebug() << "Make failed:" << builder.errorString(); else qDebug() << "Make output:" << builder.readAll(); ``` 這個函數中引入了Qt 4.2中。 **See also** [processChannelMode](qprocess.html#processChannelMode)( )[ProcessChannelMode](qprocess.html#ProcessChannelMode-enum)和[setReadChannel](qprocess.html#setReadChannel)( ) 。 ``` QProcess.setProcessEnvironment (self, QProcessEnvironment?environment) ``` 設置環境[QProcess](qprocess.html)啟動進程的時候會用_environment_對象。 例如,下面的代碼添加`C:\\BIN`目錄的可執行文件的路徑列表(`PATHS`)在Windows和套`TMPDIR`: ``` [QProcess](qprocess.html) process; [QProcessEnvironment](qprocessenvironment.html) env = [QProcessEnvironment](qprocessenvironment.html).systemEnvironment(); env.insert("TMPDIR", "C:\\MyApp\\temp"); // Add an environment variable env.insert("PATH", env.value("Path") + ";C:\\Bin"); process.setProcessEnvironment(env); process.start("myapp"); ``` 請注意如何在Windows上,環境變量名稱是區分大小寫的。 此功能被引入Qt的4.6 。 **See also** [processEnvironment](qprocess.html#processEnvironment)( )[QProcessEnvironment.systemEnvironment](qprocessenvironment.html#systemEnvironment)()和[setEnvironment](qprocess.html#setEnvironment)( ) 。 ``` QProcess.setProcessState (self, ProcessState?state) ``` 設置的當前狀態[QProcess](qprocess.html)到_state_規定。 **See also** [state](qprocess.html#state)( ) 。 ``` QProcess.setReadChannel (self, ProcessChannel?channel) ``` 設置的當前讀取通道[QProcess](qprocess.html)為給定的_channel_。當前輸入信道是所使用的函數[read](qiodevice.html#read)( )[readAll](qiodevice.html#readAll)( )[readLine](qiodevice.html#readLine)()和[getChar](qiodevice.html#getChar)( ) 。這也決定了通道的觸發[QProcess](qprocess.html) to emit [readyRead](qiodevice.html#readyRead)( ) 。 **See also** [readChannel](qprocess.html#readChannel)( ) 。 ``` QProcess.setReadChannelMode (self, ProcessChannelMode?mode) ``` ``` QProcess.setStandardErrorFile (self, QString?fileName, QIODevice.OpenMode?mode?=?QIODevice.Truncate) ``` 重定向進程的標準錯誤到文件_fileName_。當重定向到位,標準錯誤讀取通道被關閉:使用從它讀[read](qiodevice.html#read)( )總是會失敗,因為意志[readAllStandardError](qprocess.html#readAllStandardError)( ) 。該文件將被追加到,如果_mode_被追加,否則會被截斷。 See [setStandardOutputFile](qprocess.html#setStandardOutputFile)( )有關如何打開該文件的詳細信息。 注:如果[setProcessChannelMode](qprocess.html#setProcessChannelMode)( )被調用時的參數[QProcess.MergedChannels](qprocess.html#ProcessChannelMode-enum)時,此功能沒有任何影響。 這個函數中引入了Qt 4.2中。 **See also** [setStandardInputFile](qprocess.html#setStandardInputFile)( )[setStandardOutputFile](qprocess.html#setStandardOutputFile)()和[setStandardOutputProcess](qprocess.html#setStandardOutputProcess)( ) 。 ``` QProcess.setStandardInputFile (self, QString?fileName) ``` 重定向進程的標準輸入到由指定的文件_fileName_。當輸入重定向到位,[QProcess](qprocess.html)對象將在只讀模式(調用[write](qiodevice.html#write)( )將導致錯誤)。 如果文件_fileName_此刻不存在[start](qprocess.html#start)()被調用或者不可讀,啟動過程將失敗。 調用setStandardInputFile ()之后的過程中已經開始沒有任何效果。 這個函數中引入了Qt 4.2中。 **See also** [setStandardOutputFile](qprocess.html#setStandardOutputFile)( )[setStandardErrorFile](qprocess.html#setStandardErrorFile)()和[setStandardOutputProcess](qprocess.html#setStandardOutputProcess)( ) 。 ``` QProcess.setStandardOutputFile (self, QString?fileName, QIODevice.OpenMode?mode?=?QIODevice.Truncate) ``` 重定向進程的標準輸出到文件_fileName_。當重定向到位,標準輸出讀取通道被關閉:使用從它讀[read](qiodevice.html#read)( )總是會失敗,因為意志[readAllStandardOutput](qprocess.html#readAllStandardOutput)( ) 。 如果文件_fileName_此刻不存在[start](qprocess.html#start)( )被調用時,它會被創建。如果它不能被創建,起始將會失敗。 如果該文件存在,并且_mode_ is [QIODevice.Truncate](qiodevice.html#OpenModeFlag-enum),該文件將被截斷。否則(如果_mode_ is [QIODevice.Append](qiodevice.html#OpenModeFlag-enum)) ,該文件將被追加到。 調用setStandardOutputFile ()之后的過程中已經開始沒有任何效果。 這個函數中引入了Qt 4.2中。 **See also** [setStandardInputFile](qprocess.html#setStandardInputFile)( )[setStandardErrorFile](qprocess.html#setStandardErrorFile)()和[setStandardOutputProcess](qprocess.html#setStandardOutputProcess)( ) 。 ``` QProcess.setStandardOutputProcess (self, QProcess?destination) ``` 管這個過程的標準輸出流的_destination_進程的標準輸入。 下面的shell命令: ``` command1 | command2 ``` 可以完成與QProcesses用下面的代碼: ``` [QProcess](qprocess.html) process1; [QProcess](qprocess.html) process2; process1.setStandardOutputProcess(&process2); process1.start("command1"); process2.start("command2"); ``` 這個函數中引入了Qt 4.2中。 ``` QProcess.setupChildProcess (self) ``` 這個函數被調用的子進程的上下文,即,經過之前的程序是在Unix或Mac OS X (執行_fork()_,但在此之前_execve()_) 。重新實現這個功能做的子進程的最后一分鐘的初始化。例如: ``` class SandboxProcess : public [QProcess](qprocess.html) { ... protected: void setupChildProcess(); ... }; void SandboxProcess.setupChildProcess() { // Drop all privileges in the child process, and enter // a chroot jail. #if defined Q_OS_UNIX .setgroups(0, 0); .chroot("/etc/safe"); .chdir("/"); .setgid(safeGid); .setuid(safeUid); .umask(0); #endif } ``` 你不能從這個函數退出過程(通過調用exit ( ) ,例如) 。如果你需要在開始執行前停止程序,你的解決方法是發出[finished](qprocess.html#finished)(),然后調用exit ( ) 。 **Warning:**調用此函數由[QProcess](qprocess.html)在Unix和Mac OS X只。在Windows和QNX ,那就不叫。 ``` QProcess.setWorkingDirectory (self, QString?dir) ``` 設置工作目錄_dir_。[QProcess](qprocess.html)將啟動此目錄中的過程。默認行為是啟動該進程在調用進程的工作目錄。 **Note:**工作目錄設置將被忽略在Symbian ,這個過程的私有目錄被認為是其工作目錄。 **Note:**QNX的,這可能導致所有應用程序線程暫時凍結。 **See also** [workingDirectory](qprocess.html#workingDirectory)()和[start](qprocess.html#start)( ) 。 ``` QProcess.start (self, QString?program, QStringList?arguments, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 開始定_program_在一個新的進程,如果沒有已經在運行,通過命令行參數中_arguments_。該[OpenMode](qiodevice.html#OpenModeFlag-enum)被設置為_mode_。 該[QProcess](qprocess.html)對象將立即進入啟動狀態。如果進程啟動成功,[QProcess](qprocess.html)會發出[started](qprocess.html#started)( ),否則,[error](qprocess.html#error)()將被發射。如果[QProcess](qprocess.html)對象已在運行的過程中,一個警告可能會打印在控制臺,而現有的程序將繼續運行。 **Note:**過程是異步啟動,這意味著[started](qprocess.html#started)()和[error](qprocess.html#error)( )信號可能會被延遲。通話[waitForStarted](qprocess.html#waitForStarted)( ),以確保這一進程已經開始(或無法啟動),和這些信號已經發出。 **Note:**被執行的參數沒有進一步分裂。 **Windows:**包含空格的參數被包裝在引號中。 **See also** [pid](qprocess.html#pid)( )[started](qprocess.html#started)()和[waitForStarted](qprocess.html#waitForStarted)( ) 。 ``` QProcess.start (self, QString?program, QIODevice.OpenMode?mode?=?QIODevice.ReadWrite) ``` 這是一個重載函數。 啟動程序_program_在一個新的進程,如果尚未運行。_program_是一個同時包含程序名和參數單個文本字符串。該參數由一個或多個空格隔開。例如: ``` [QProcess](qprocess.html) process; process.start("del /s *.txt"); // same as process.start("del", QStringList() << "/s" << "*.txt"); ... ``` 該_program_字符串也可以包含引號,以確保含有空格的參數是否正確提供給新的進程。例如: ``` [QProcess](qprocess.html) process; process.start("dir \"My Documents\""); ``` 如果[QProcess](qprocess.html)對象已在運行的過程中,一個警告可能會打印在控制臺,而現有的程序將繼續運行。 需要注意的是,在Windows上,報價需要既逃脫了,并引述。例如,上面的代碼會以下面的方式被指定,以確保`"My Documents"`作為參數傳遞給`dir`可執行文件: ``` [QProcess](qprocess.html) process; process.start("dir \"\"\"My Documents\"\"\""); ``` 該[OpenMode](qiodevice.html#OpenModeFlag-enum)被設置為_mode_。 ``` (bool, int?pid) QProcess.startDetached (QString?program, QStringList?arguments, QString?workingDirectory) ``` 啟動程序_program_與參數_arguments_在一個新的進程,并從分離它。成功時返回TRUE ,否則返回False 。如果調用進程退出,脫離的進程將繼續生活。 需要注意的是包含空格的參數不傳遞到過程作為單獨的參數。 **Unix:**在啟動過程中會在它自己的會話中運行,并作為守護程序運行。 **Windows:**包含空格的參數被包裝在引號中。在啟動過程中會作為一個經常性的獨立的進程中運行。 這一過程將在目錄中開始_workingDirectory_。 **Note:**QNX的,這可能導致所有應用程序線程暫時凍結。 **Note:**VxWorks的,這將啟動RTP過程中始終具有優先級設置為220 。 如果函數成功,則*_pid_被設定為啟動的過程的進程標識符。 ``` bool QProcess.startDetached (QString?program, QStringList?arguments) ``` 啟動程序_program_用給定的_arguments_在一個新的進程,并從分離它。成功時返回TRUE ,否則返回False 。如果調用進程退出,脫離的進程將繼續生活。 **Note:**包含空格的參數沒有被傳遞給進程作為獨立參數。 **Unix:**在啟動過程中會在它自己的會話中運行,并作為守護程序運行。 **Windows:**包含空格的參數被包裝在引號中。在啟動過程中會作為一個經常性的獨立的進程中運行。 ``` bool QProcess.startDetached (QString?program) ``` 這是一個重載函數。 啟動程序_program_在一個新的進程。_program_是一個同時包含程序名和參數單個文本字符串。該參數由一個或多個空格隔開。 該_program_字符串也可以包含引號,以確保含有空格的參數是否正確提供給新的進程。 ``` ProcessState QProcess.state (self) ``` [ 返回該過程的當前狀態。 ](qprocess.html#ProcessState-enum) [**See also**](qprocess.html#ProcessState-enum) [stateChanged](qprocess.html#stateChanged)()和[error](qprocess.html#error)( ) 。 ``` QStringList QProcess.systemEnvironment () ``` 返回調用進程的環境為key = value對的列表。例如: ``` [QStringList](qstringlist.html) environment = [QProcess](qprocess.html).systemEnvironment(); // environment = {"PATH=/usr/bin:/usr/local/bin", // "USER=greg", "HOME=/home/greg"} ``` 這個函數不緩存系統環境。因此,有可能獲得環境的更新版本,如果低級別的C庫函數如`setenv`OT`putenv`已被調用。 但是請注意,重復調用此函數將重新創建的環境變量列表,這是一個不平凡的操作。 **Note:**為新的代碼,它是推薦使用[QProcessEnvironment.systemEnvironment](qprocessenvironment.html#systemEnvironment)( ) 這個函數是Qt 4.1中引入。 **See also** [QProcessEnvironment.systemEnvironment](qprocessenvironment.html#systemEnvironment)( )[environment](qprocess.html#environment)()和[setEnvironment](qprocess.html#setEnvironment)( ) 。 ``` QProcess.terminate (self) ``` 這種方法也是一個Qt槽與C + +的簽名`void terminate()`。 試圖終止進程。 這個過程可能不會退出作為調用這個函數(它被賦予機會提示用戶輸入任何未保存的文件等)的結果。 在Windows中,終止( )投遞一個WM_CLOSE消息過程中的所有頂層窗口,然后在過程本身的主線程。在Unix和Mac OS X SIGTERM信號被發送。 在不運行一個事件循環,或者其事件循環不處理WM_CLOSE消息的Windows控制臺應用程序,只能通過調用被終止[kill](qprocess.html#kill)( ) 。 在Symbian ,此功能需要平臺的安全能力`PowerMgmt`。如果不存在,該過程將恐慌與KERN - EXEC 46 。 **Note:**終止其他進程正在運行的進程通常會導致Symbian的恐慌,由于平臺的安全性。 **See also** [Symbian Platform Security Requirements](index.htm)和[kill](qprocess.html#kill)( ) 。 ``` bool QProcess.waitForBytesWritten (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForBytesWritten](qiodevice.html#waitForBytesWritten)( ) 。 ``` bool QProcess.waitForFinished (self, int?msecs?=?30000) ``` 塊,直到該進程已結束,[finished](qprocess.html#finished)()信號已被發出,或直到_msecs_毫秒過去了。 返回True如果這個過程完成,否則返回False (如果操作超時,如果出現錯誤,或者如果這[QProcess](qprocess.html)已經完成) 。 此功能可以操作沒有一個事件循環。編寫非GUI的應用程序和在非GUI線程執行I / O操作時,它是有用的。 **Warning:**從主(圖形用戶界面)線程調用該函數可能會導致你的用戶界面凍結。 如果毫秒為-1 ,此功能將不會超時。 **See also** [finished](qprocess.html#finished)( )[waitForStarted](qprocess.html#waitForStarted)( )[waitForReadyRead](qprocess.html#waitForReadyRead)()和[waitForBytesWritten](qprocess.html#waitForBytesWritten)( ) 。 ``` bool QProcess.waitForReadyRead (self, int?msecs?=?30000) ``` 從重新實現[QIODevice.waitForReadyRead](qiodevice.html#waitForReadyRead)( ) 。 ``` bool QProcess.waitForStarted (self, int?msecs?=?30000) ``` 塊,直到該進程已經開始,[started](qprocess.html#started)()信號已被發出,或直到_msecs_毫秒過去了。 返回True如果該進程已成功啟動,否則返回False (如果操作超時,或者如果發生錯誤) 。 此功能可以操作沒有一個事件循環。編寫非GUI的應用程序和在非GUI線程執行I / O操作時,它是有用的。 **Warning:**從主(圖形用戶界面)線程調用該函數可能會導致你的用戶界面凍結。 如果毫秒為-1 ,此功能將不會超時。 **See also** [started](qprocess.html#started)( )[waitForReadyRead](qprocess.html#waitForReadyRead)( )[waitForBytesWritten](qprocess.html#waitForBytesWritten)()和[waitForFinished](qprocess.html#waitForFinished)( ) 。 ``` QString QProcess.workingDirectory (self) ``` If [QProcess](qprocess.html)已指派一個工作目錄,這個函數返回的工作目錄,該[QProcess](qprocess.html)將進入程序啟動之前。否則, (即,沒有目錄已分配, )一個空字符串返回,[QProcess](qprocess.html)將使用應用程序的當前工作目錄中。 **See also** [setWorkingDirectory](qprocess.html#setWorkingDirectory)( ) 。 ``` int QProcess.writeData (self, str?data) ``` 從重新實現[QIODevice.writeData](qiodevice.html#writeData)( ) 。 * * * ## Qt Signal Documentation ``` void error (QProcess::ProcessError) ``` 這是該信號的默認超載。 當使用過程中發生錯誤,這個信號被發射。指定_error_描述發生錯誤的類型。 ``` void finished (int,QProcess::ExitStatus) ``` 這是該信號的默認超載。 當該過程完成時,這個信號被發射。_exitCode_是該進程的退出代碼,_exitStatus_是的退出狀態。之后的過程完成后,該緩沖器中[QProcess](qprocess.html)仍然完好無損。你仍然可以讀取該進程可能已寫入之前,完成所有數據。 **See also** [exitStatus](qprocess.html#exitStatus)( ) 。 ``` void finished (int) ``` ``` void readyReadStandardError () ``` 這是該信號的默認超載。 這個信號被發射時的過程中取得了新的數據可通過其標準錯誤通道(`stderr`) 。目前它是不管發射[read channel](qprocess.html#readChannel)。 **See also** [readAllStandardError](qprocess.html#readAllStandardError)()和[readChannel](qprocess.html#readChannel)( ) 。 ``` void readyReadStandardOutput () ``` 這是該信號的默認超載。 這個信號被發射時的過程中取得了新的數據可以通過它的標準輸出通道(`stdout`) 。目前它是不管發射[read channel](qprocess.html#readChannel)。 **See also** [readAllStandardOutput](qprocess.html#readAllStandardOutput)()和[readChannel](qprocess.html#readChannel)( ) 。 ``` void started () ``` 這是該信號的默認超載。 這個信號是由發射[QProcess](qprocess.html)當這個過程已經開始,[state](qprocess.html#state)()返回[Running](qprocess.html#ProcessState-enum)。 ``` void stateChanged (QProcess::ProcessState) ``` 這是該信號的默認超載。 這個信號被發射時的狀態[QProcess](qprocess.html)變化。該_newState_參數是狀態[QProcess](qprocess.html)更改為。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看