1 #include "terminal.h" 2 #include <QProcess> 3 #include <QDebug> 4 #include <QLoggingCategory> 5 Q_LOGGING_CATEGORY(flapp, "app.core") 6 execCmd(const QString cmd)7QString Terminal::execCmd(const QString cmd) 8 { 9 QStringList arg; 10 arg <<"-c" << cmd; 11 QString result; 12 QProcess cmdExecer; 13 cmdExecer.setProcessChannelMode(QProcess::ProcessChannelMode::MergedChannels); 14 cmdExecer.start("/bin/bash", arg); 15 cmdExecer.waitForStarted(); 16 while(cmdExecer.waitForReadyRead()) 17 { 18 result += cmdExecer.readAll(); 19 } 20 21 return result; 22 } 23 killProcess(const QString & name)24QString Terminal::killProcess(const QString &name) 25 { 26 QString ret; 27 int index = -1; 28 QStringList list = execCmd(QString("ps -ef | grep 'PID' | grep -v grep")).split(' '); 29 30 for(int i=0; i<list.size(); i++) 31 { 32 if(list[i] =="PID"){ 33 index =i; 34 qCDebug(flapp) <<"pid index="<< index; 35 break; 36 } 37 } 38 39 if(index == -1) 40 return ""; 41 42 QString cmd = QString("ps -ef | grep '%1' | grep -v grep | awk -F ' ' '{print $%2}'").arg(name).arg(index); 43 qCDebug(flapp)<<cmd; 44 QString pids = execCmd(cmd); 45 list = pids.split("\n"); 46 foreach (QString pid, list) { 47 if(!pid.isEmpty()) 48 ret =execCmd(QString("kill -9 %1").arg(pid)); 49 } 50 51 return ret; 52 } 53