2010-04-12 61 views
1

我試圖檢索我的計算機上的活動進程,並搜索特定的一個,如果它存在,我應該殺死它。 是否有可能在不知道執行的具體路徑的情況下執行該操作? 我知道執行進程的名稱,但不是完整的路徑。殺死進程時不知道使用Qt的全路徑

因此,在短期:

  1. 獲取所有活動的進程。
  2. 殺死特定進程。

謝謝!

回答

0

AFAIK沒有Qt特定的方式來做你想做的事情,所以你必須使用本地平臺的API。您對哪個平臺(Widnows,Unix,MacOS)感興趣?

編輯: 看看MSDN過程函數參考:http://msdn.microsoft.com/en-us/library/ms684847(v=VS.85).aspx,特別是EnumProcesses,OpenProcess和TerminateProcess。我不會給你任何代碼片段,因爲我自己沒有使用這個API(我只是把它加入了書籤)。

+0

only Windows atm – kaycee 2010-04-12 17:54:06

0

就像是說,你能做到這一點的窗戶很容易用勝利API:Enumerating All Processes & & Terminating a Process

爲Linux,你可以嘗試運行像水木清華「PS -A」使用QProcess並分析它的標準輸出;水木清華這樣的:

QProcess process; 
process.setProcessChannelMode(QProcess::MergedChannels); 
process.start("ps", QStringList() << "-A"); 
if (!process.waitForStarted()) 
    return; 
if (!process.waitForFinished()) 
    return; 

//qDebug() << process.readAll();  
QByteArray output = process.readLine().trimmed(); 
while (!output.isEmpty()) 
{ 
    qDebug() << output; 
    QList<QByteArray> items = output.split(' '); 
    qDebug() << "pid:" << items.first() << " cmd:" << items.last(); 
    qDebug() << "==============================================="; 
    output = process.readLine().trimmed(); 
} 

,應返回運行的進程的列表,你可以嘗試不同的命令行選項ps得到你需要的數據。我相信殺死這個過程可以用同樣的方式完成;通過運行kill [PID]

希望這將給你如何進行的想法,認爲