2013-07-23 33 views
1

如何知道Qprocess是否已成功完成其執行或是否已使用process.kill()強制殺死?在這兩種情況下,exitstatus()都是normalExit。 有什麼辦法嗎?QProcess Killed或成功完成

回答

1

我不認爲有任何特定的函數調用,如果這就是你想要的。你沒有提及你使用的是哪個平臺,但在Linux的情況下,調用kill()會向進程發送一條消息以終止它,因此就進程而言,完成時一切正常。

雖然是子類QProcess並且重載了kill函數來設置一個布爾值,您可以在QProcess發出完成()時檢查它。

0

QProcesss::exiStatus()會給你這個信息。如果QProcess正常退出,它將返回正常退出,或者如果該進程被終止,它將返回崩潰狀態。

您也可以檢查QProcess::exitCode()以查看該過程的確切退出碼。

如果一個進程被SIGKILL終止,以下是一個Linux例子。

QProcess subproc; 
// Run the process here 
subproc.waitForExit(); 
qDebug() << "Status: " << subproc.exitStatus() 
qDebug() << "Code: " << subproc.exitCode() 

雖然子進程正在運行運行以下Linux命令:

kill -9 <subproc PID> 

再下面是印刷:

Status: CrashExit 
Code: 9 

在不使用在子過程kill命令觀察輸出如下: