2010-04-12 1 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

Windows atm – kaycee

0

, 당신은 창문 비교적 쉽게 사용 윈 API를 할 수있는 : Enumerating All Processes & & Terminating a Process

리눅스에 대한 당신이 QProcess를 사용하여 "추신 - A"와 같은 떨어지게을 실행 시도하고 표준 출력을 구문 분석 할 수를; 이 같은 떨어지게 :이 실행중인 프로세스의 목록을 반환해야

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]

희망을 실행하여이 당신에게 진행 방법에 대한 아이디어를 줄 당신이 맥 OS에있는 경우

0

에 관하여 또는 BSD 당신은 sysctl API을 사용하는 모든 프로세스를 나열 할 수있다.

리눅스에서는 source code to ps에서 수행 된 작업을 살펴 ​​보는 것이 가장 좋습니다. 이는 기본적으로 /proc file system을 탐색하는 것입니다.