利用CMD命令行杀进程方法(已知该进程的PID号,可以直接杀该进程)(QProcess、taskkill)

博主做工程时,利用Qt的主线程开启了一条支线程,然后用该支线程以阻塞的方式开启了一条进程。这条进程执行的时间很久,博主想要在执行到一半的时候,强行终止该进程。经过一天的资料查找,博主终于找打了一个简易可行的杀进程方法,下面详细的方法介绍如下。

1.1博主利用Qt的QProcess在支线程里面开启了一条进程,并且获取了该进程的PID号。代码如下:(注意:在Qt下进程的PID是quint64 QProcess::processID()的返回值,不是Q_PID QProcess::PID()的返回值)

    qDebug()<<tr("第一种方式:开启一个进程!");
    /*QProcess第一种开启方法:启动时,在程序后面附带参数*/
    process = new QProcess(this);
    process->setObjectName("processObject");
    qDebug()<<process->objectName();
    qDebug()<<"线程里面"<<QThread::currentThreadId();
    process->start("cmd");
    process->waitForStarted();
    qDebug()<<"process->processId()=="<<process->processId();
    qDebug()<<"process->pid()=="<<process->pid();
    process->waitForFinished(60000);
    qDebug()<<"支线程执行完毕";

 

 

1.2博主想要在该进程执行到一半的时候,强行终止这个进程,可以直接在cmd调用下面这条命令,可以直接杀死该进程。(注意:13368是要杀进程的PID号)

taskkill /f /pid 13368

 

 

Qt代码杀进程如下所示:

if(processID.toInt())
    {
        QProcess process(0);
        process.start("cmd");           //启动一个cmd线程
        process.waitForStarted();       //等待启动进程完成,超时30s则接触阻塞
        process.write(tr("taskkill /f /pid %1\n").arg(processID).toLatin1());
        process.closeWriteChannel();
        process.waitForFinished();      //等待启动进程完成,超时30s则接触阻塞
        qDebug()<<"p.readAllStandardOutput()=="<<QString::fromLocal8Bit(process.readAllStandardOutput());
    }

 

 

参考内容:

https://blog.csdn.net/rznice/article/details/54345786(参考:cmd的taskkill杀进程)

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值