如果程序完成,QProcess exe不会关闭

时间:2016-09-30 05:35:28

标签: c++ qt qprocess

我的问题是我在QProcess中启动可执行文件,如下所示:

QProcess Work;
Work.start(program.exe);

此可执行文件已运行,因为它已在后台启动,我可以向其发送请求。如果我已经完成,我将按以下方式关闭可执行文件:

Work.close();

但是,如果我正在查看Taskmanager,则program.exe正在运行。我不明白这种行为,因为我认为如果我关闭进程就会停止执行。

2 个答案:

答案 0 :(得分:0)

您应该使用void QProcess::terminate()void QProcess::kill()

terminate() - 尝试终止该过程。

kill() - 立即杀死进程。

答案 1 :(得分:0)

我有一个非常相似的案例,虽然我正在使用嵌入QT 4.8的linux。不确定这是否对您有所帮助,但由于我无法将其置于评论中,因此我必须单独回答。

您是否将父级设置为QProcess?就我而言,我像这样实例化了QProcess

QProcess *p = new QProcess;

我可以在运行进程列表中看到每次我实例化一个新的QProcess时,我得到了一个新的进程,该进程无法被 close()关闭,终止() kill()。当我最终重写这样的代码时

QProcess *p = new QProcess(mainW); //mainW was my GUI class, which handled also the closing of the process

问题解决了,我甚至不需要调用任何函数来关闭进程。在我的情况下,我确信我调用的过程正在完成,因为几乎所有这些都是音频文件,所以我可以听到它们完成。其他是我的程序等待完成的过程,所以我再次确定它们已经结束,因为我的程序并没有等到它们,

希望这可以提供帮助,尽管操作系统不同。