QProcess已终止或已成功完成

时间:2013-07-23 14:20:50

标签: qt kill qprocess

如何知道Qprocess是否已成功完成执行或是否已使用process.kill()强行杀死?在这两种情况下,exitstatus()都是normalExit。 有什么办法吗?

2 个答案:

答案 0 :(得分:1)

我认为没有任何特定的函数调用,如果这是您正在寻找的。你没有提到你正在使用什么平台,但是在Linux的情况下,调用kill()会向进程发送一条消息以便它终止,因此就进程而言,一切都完成后一切正常。

你可以做的是子类QProcess并重载kill函数来设置一个布尔值,你可以在QProcess发出finish()时检查它。

答案 1 :(得分: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命令,会观察到以下内容:

Status: NormalExit
Code: 0