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