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

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


亲测有效

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

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

具体代码如下:

#include <windows.h>//winApi函数
#include <winbase.h>//winApi函数
#include <QCoreApplication>

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 <QCoreApplication>

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

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

  system(cmd.toLocal8Bit().data());
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值