그래서 시작되는 응용 프로그램이 있다는 문제가 있습니다. 그런 다음 테스트를 통해 해제하고 다시 시작해야합니다. 그러나 하드 코딩없이 완료해야합니다.프로세스가 실행 된 위치 찾기
프로세스가 실행 된 곳을 찾는 방법이 있습니까? 실행중인 모든 프로세스의 목록을 찾을 수 있지만 이것이 가능한지 모릅니다.
편집 : Windows 7 OS에서.
그래서 시작되는 응용 프로그램이 있다는 문제가 있습니다. 그런 다음 테스트를 통해 해제하고 다시 시작해야합니다. 그러나 하드 코딩없이 완료해야합니다.프로세스가 실행 된 위치 찾기
프로세스가 실행 된 곳을 찾는 방법이 있습니까? 실행중인 모든 프로세스의 목록을 찾을 수 있지만 이것이 가능한지 모릅니다.
편집 : Windows 7 OS에서.
먼저 "프로세스가 실행되는 위치 찾기"란 무엇을 의미합니까? 나는 당신이 부모의 프로세스 ID를 의미한다고 가정하고 있지만 현재 작업 디렉토리, 원격 호출의 IP 등을 의미 할 수 있습니다 ...
부모 프로세스 ID를 찾으려면 getppid()을 찾으십시오.
편집 : 이것은 (정상적인 프로그래머와 마찬가지로) 유닉스 계열 시스템을 사용한다고 가정합니다.
편집 # 2 : Windows를 사용하고 있으므로 잘 모릅니다.
편집 # 3 : 실행중인 프로그램의 경로를 찾고 있으므로 argv [0]을 사용하십시오. int main (int argc, char * argv [])에 대한 첫 번째 명령 행 arg는 항상 이진 경로입니다.
exe의 위치를 의미합니다. 그리고 아니, 우리는 유닉스 기계를 가지고 있지 않다. – discodowney
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;
}
쉬운 휴대용 ARGV 방법을 사용하는 것 [0]. 그것은 당신이 필요로하는 전체 .exe 파일 경로를 반환합니다.
어떤 OS를 사용하고 있습니까? – hmjd
OS마다 다를 수 있으므로 사용하려는 OS API에 대해 언급해야합니다. – PlasmaHH
우리가 Windows에 관해서 말하고 있다고 가정하면, 프로그램이 그러한 정보를 얻도록 신경을 쓰게 될 것입니다.하지만 가능합니다. 나는 네 상황에서 옳은 일이라면 확신하지 못한다. 프로그램은 자신의 프로세스를 정상적으로 관리하지 않습니다. 그걸 시작한 사람이해야 할 일이 남았지 만, 그 런처를 수정할 수있는 권한이 없다고 가정합니다. – Neil