如何正确管理一个只有一个参数的 QProcess
Posted
技术标签:
【中文标题】如何正确管理一个只有一个参数的 QProcess【英文标题】:How to correctly manage a QProcess with one only argument 【发布时间】:2015-04-20 12:13:56 【问题描述】:我想监控我在可能的 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 关联的正在运行的进程的名称; 现在,我想应用另一个进程(“pmax -x mypid),这样我就可以获得我的应用程序的 RAM 量: 我该怎么做?我读了一个 QProcess 需要一个 QStringList 参数;就我而言,我只有一个参数可用作参数,并且不清楚如何正确设置 tyhe 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】:您有 2 个参数,-x
和 pid
。
QStringList arguments;
arguments << "-x" << splitsplit[0];
QProcess pr;
pr.start("pmap", arguments);
【讨论】:
正是我想要的。它运行完美。问题解决了以上是关于如何正确管理一个只有一个参数的 QProcess的主要内容,如果未能解决你的问题,请参考以下文章