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