欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-28 11:10:53
...

博主做工程时,利用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

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

 

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

 

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杀进程)