Qt démarre/tue un processus externe

Référence 1

démarrer le fil externe

Il y a:

  • QProcess ::execute() est ouvert en bloquant le processus principal (membre statique) ;
  • QProcess ::start() s'ouvre en tant que processus enfant du processus principal (parent-enfant) ;
  • QProcess ::startDetached() s'ouvre isolément ;

(1) Méthode QProcess::execute()

	QProcess::execute("C:\\Environment\\influxDB_1_5_2\\influxd.exe")

(2) Méthode QProcess::start()

	QProcess  proc;
	proc.start("C:\\Environment\\influxDB_1_5_2\\influxd.exe");

(3) Méthode QProcess ::startDetached() (recommandé !)

    if (QProcess::startDetached("C:\\Environment\\influxDB_1_5_2\\influxd.exe"))
        qDebug()  <<"Running...";
    else
        qDebug()  <<"Failed";

Déterminer si le processus est en cours d'exécution

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");
}

terminer le processus externe

	// 通过进程ID结束进程(该进程由proc对象打开前提是通过 proc)
    QProcess::startDetached("taskkill -t  -f /pid " + QString::number(proc.processId()));
	// 通过进程名字结束进程
    QProcess::startDetached("taskkill -t  -f /IM " + QString("influxd.exe"));

Je suppose que tu aimes

Origine blog.csdn.net/CXYYL/article/details/121540577
conseillé
Classement