2013-07-23 38 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命令观察输出如下: