如果我们关闭主应用程序,QProcess启动的进程不会退出

时间:2012-11-14 08:23:48

标签: c++ linux qt

假设我在Linux中启动终端进程,如果终端关闭,终端启动的子进程也会退出(即使进程是使用sudo启动的)。但是,如果我在p1应用程序中使用QProcess启动进程(例如)GUI,然后关闭gui应用程序,则进程p1仍会继续运行,好像它是一个守护进程,即使我没有使用QProcess::startDetached()启动进程。

process1->start("gksudo",args);

process1->terminate();
process1->close();
在closeEvent中

2 个答案:

答案 0 :(得分:0)

尝试添加

delete process1;

在GUI类析构函数中。

答案 1 :(得分:0)

您是如何初始化QProcess的?当我在mainwindow.cpp中执行以下操作(在Windows上)时,当我关闭主应用程序时,我的子进程已关闭。

QProcess* proc = new QProcess(this);
proc->start("notepad.exe q:/blah2.txt");

通过使MainWindow成为QProcess的父级,MainWindow将在其QObject析构函数中销毁并关闭它。