xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/core/terminal.cpp (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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)7 QString 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)24 QString 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