Qt启动/杀死外部进程

参考1

启动外部线程

主要有:

  • QProcess ::execute() 阻塞主进程的方式打开(静态成员);
  • QProcess ::start() 以主进程的子进程的方式打开(父子);
  • QProcess ::startDetached() 以隔离的方式打开;
(1) QProcess ::execute() 方法
	QProcess::execute("C:\\Environment\\influxDB_1_5_2\\influxd.exe")
(2) QProcess ::start() 方法
	QProcess  proc;
	proc.start("C:\\Environment\\influxDB_1_5_2\\influxd.exe");
(3) QProcess ::startDetached() 方法 (推荐!)
    if (QProcess::startDetached("C:\\Environment\\influxDB_1_5_2\\influxd.exe"))
        qDebug()  <<"Running...";
    else
        qDebug()  <<"Failed";

判断进程是否在运行

bool IsProcessExist(const QString &processName)// 返回 true/false
{
    QProcess proc;
    proc.start("tasklist");
    proc.waitForFinished();// 等待 tasklist 启动

    QByteArray result = proc.readAllStandardOutput();
    QString str = result;
    if(str.contains(processName))
    {
        qDebug() << processName <<"is Running";
        return true;
    }
    else
    {
        qDebug() << "Can't find " << processName;
        return false;
    }
}
bool IsProcessExist(const QString &processName)// 返回 true/false
{
    QString strInfo = QString::number(QProcess::execute("tasklist", QStringList()<<"-fi"<<"imagename eq influxd.exe"));
    if(strInfo .contains(processName))
    {
        qDebug() << processName <<"is Running";
        return true;
    }
    else
    {
        qDebug() << "Can't find " << processName;
        return false;
    }
}
void getProcessInfo() // 返回信息(需要对返回信息进行判断)
{
	QProcess::execute("tasklist", QStringList()<<"-fi"<<"imagename eq prog.exe");
}

终止外部进程

	// 通过进程ID结束进程(该进程由proc对象打开前提是通过 proc)
    QProcess::startDetached("taskkill -t  -f /pid " + QString::number(proc.processId()));
	// 通过进程名字结束进程
    QProcess::startDetached("taskkill -t  -f /IM " + QString("influxd.exe"));
  • 0
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值