1

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

4

2 回答 2

1

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

不过,您可以做的是子类 QProcess 并重载 kill 函数以设置一个布尔值,您可以在 QProcess 发出 finished() 时检查该值。

于 2013-07-23T14:25:37.770 回答
0

QProcesss::exiStatus()会给你这个信息。如果 QProcess 正常退出,它将返回 Normal Exit,或者如果进程被杀死,它将返回 Crash Status。

您还可以检查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
于 2017-02-03T19:03:47.543 回答