2015-04-20 32 views
2

我想監視如何使用RAM內存可能會Qt應用程序;所以,我想了一些要放在代碼中的東西。 我試過如下:如何正確管理一個只有一個參數的QProcess

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 

回答

3

你有2個參數,-xpid

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

確切地說我是怎麼找的,它運行的很好,問題解決了 – LittleSaints

+1

@LittleSaints:你應該把答案標記爲'接受'。 –

相關問題