2012-04-26 2 views
0

그래서 시작되는 응용 프로그램이 있다는 문제가 있습니다. 그런 다음 테스트를 통해 해제하고 다시 시작해야합니다. 그러나 하드 코딩없이 완료해야합니다.프로세스가 실행 된 위치 찾기

프로세스가 실행 된 곳을 찾는 방법이 있습니까? 실행중인 모든 프로세스의 목록을 찾을 수 있지만 이것이 가능한지 모릅니다.

편집 : Windows 7 OS에서.

+0

어떤 OS를 사용하고 있습니까? – hmjd

+0

OS마다 다를 수 있으므로 사용하려는 OS API에 대해 언급해야합니다. – PlasmaHH

+0

우리가 Windows에 관해서 말하고 있다고 가정하면, 프로그램이 그러한 정보를 얻도록 신경을 쓰게 될 것입니다.하지만 가능합니다. 나는 네 상황에서 옳은 일이라면 확신하지 못한다. 프로그램은 자신의 프로세스를 정상적으로 관리하지 않습니다. 그걸 시작한 사람이해야 할 일이 남았지 만, 그 런처를 수정할 수있는 권한이 없다고 가정합니다. – Neil

답변

0

먼저 "프로세스가 실행되는 위치 찾기"란 무엇을 의미합니까? 나는 당신이 부모의 프로세스 ID를 의미한다고 가정하고 있지만 현재 작업 디렉토리, 원격 호출의 IP 등을 의미 할 수 있습니다 ...

부모 프로세스 ID를 찾으려면 getppid()을 찾으십시오.

편집 : 이것은 (정상적인 프로그래머와 마찬가지로) 유닉스 계열 시스템을 사용한다고 가정합니다.

편집 # 2 : Windows를 사용하고 있으므로 잘 모릅니다.

편집 # 3 : 실행중인 프로그램의 경로를 찾고 있으므로 argv [0]을 사용하십시오. int main (int argc, char * argv [])에 대한 첫 번째 명령 행 arg는 항상 이진 경로입니다.

+0

exe의 위치를 ​​의미합니다. 그리고 아니, 우리는 유닉스 기계를 가지고 있지 않다. – discodowney

1

QueryFullProcessImageName()는 프로세스의 실행 이미지의 경로를 제공 할 것이다 :

#include <windows.h> 
#include <iostream> 

int main() 
{ 
    char exe_path[MAX_PATH]; 
    DWORD exe_path_size = MAX_PATH; 
    if (QueryFullProcessImageName(GetCurrentProcess(), 
            0, 
            exe_path, 
            &exe_path_size)) 
    { 
     std::cout << exe_path << "\n"; 
    } 

    return 0; 
} 
1

쉬운 휴대용 ARGV 방법을 사용하는 것 [0]. 그것은 당신이 필요로하는 전체 .exe 파일 경로를 반환합니다.