2010-04-12 45 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]

希望这将给你如何进行的想法,认为