Qt强制杀死当前程序进程或指定进程-windows或linux

Qt强制杀死当前程序进程或指定进程


亲测有效


1. windows操作系统下【亲测有效】

windows操作系统下,Qt程序需要退出时或者某些时刻杀死当前进程或者指定PID进程时,可以采用windows下的cmd命令TASKKILL 指令,并采用Windows下API 接口函数:WinExec()函数

具体代码如下:

#include //winApi函数
#include //winApi函数
#include 

void QtWinApi::KillProcess()
{
    qint64 pid = QCoreApplication::applicationPid();//获取当前进程的PID
#ifdef WIN32//Windows系统
    /**
     * 强制杀死当前进程,同时推出所有子线程
     * TASKKILL 参数解释:
     * /T : 杀死当前进程启动和其启动的所有子线程
     * /F: 强制杀死进程
     * */
    QString cmd = QString("TASKKILL /PID %1 /F").arg(pid);//Windows 系统下,杀死当前进程命令,不杀死其开启的子进程
    //    QString cmd = QString("TASKKILL /PID %1 /T /F").arg(pid);//Windows 系统下,杀死当前进程树,包括其开启的子进程

    //@ 可以,无dos黑窗口
    WinExec(cmd.toLocal8Bit().data(), SW_HIDE);//SW_HIDE:控制运行cmd时,不弹出cmd运行窗口
#endif
}

2. Linux操作系统下【未测试,理论上是可以的】

Linux操作系统下,Qt程序需要退出时或者某些时刻杀死当前进程或者指定PID进程时,可以采用Linux下的kill 指令,配合system() 函数

具体代码如下:


#include 

void QtWinApi::KillProcess()
{
    qint64 pid = QCoreApplication::applicationPid();//获取当前进程的PID

    QString cmd = QString("kill -9 %1").arg(pid);//Linux 系统下,强制杀死当前进程命令

  system(cmd.toLocal8Bit().data());
}

你可能感兴趣的:(Qt,qt,多进程)