我想监视我用于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
答案 0 :(得分:3)
您有2个参数,-x
和pid
。
QStringList arguments;
arguments << "-x" << splitsplit[0];
QProcess pr;
pr.start("pmap", arguments);