如何使用一个参数正确管理QProcess

时间:2015-04-20 12:13:57

标签: qt qprocess

我想监视我用于Qt应用程序的RAM内存的方式;所以,我想到了要放在代码中的东西。 我尝试了以下方法:

QProcess p;
p.start("ps -A");
p.waitForFinished();
QByteArray RamMem =p.readAllStandardOutput();
p.close();
quint16 pidcounter = 0;
QString pidString(RamMem);
QStringList RamMemSplit = pidString.split('\n');
quint16 RamMemSplitcounter = RamMemSplit.count();
while(pidcounter< RamMemSplitcounter)
{
    if (RamMemSplit[pidcounter].contains(MyApp))
    {
        splitsplit = RamMemSplit[pidcounter].split(" ");
        qDebug() << "Process:"<< splitsplit[10]<< "pid:"<< splitsplit[0];
    }
    pidcounter++;
}

通过这种方式,我保存了与其pid关联的运行进程的名称; 现在,我想应用另一个进程(&#34; pmax -x mypid),这样我就可以获得我的应用程序的RAM数量: 我怎么能这样做?我读了一个QProcess需要一个QStringList参数;在我的情况下,我只有一个参数可以用作参数,并且不清楚如何正确设置QProcess。以下是我的想法,与上一部分相关:

QStringList listprova(splitsplit[0]);
QProcess pr;
pr.start("pmap -x", listprova);
pr.waitForFinished();
QByteArray pmapResult = pr.readAllStandardOutput();
pr.close();
QString  pmapString(pmapResult);
QStringList pmapSplit = pmapString.split('\n');
quint8 pmapCounter = pmapSplit.count();
qDebug() << pmapSplit[pmapCounter]; // last line of "pmap -x [pid]" console command

1 个答案:

答案 0 :(得分:3)

您有2个参数,-xpid

QStringList arguments;
arguments << "-x" << splitsplit[0];
QProcess pr;
pr.start("pmap", arguments);