2010-04-07 9 views

답변

1

귀하의 질문에 짧은에서 http://www.codeproject.com/KB/threads/ParentPID.aspx

에 대한 답변이, 당신이 lpfCreateToolhelp32Snapshot()로 실행중인 모든 프로세스의 스냅 샷을 만든 다음 lpfProcess32First()/lpfProcess32Next()로 (GetCurrentProcessId()로 식별) 프로세스를 찾아 그것을 통해 반복. 자신 만의 프로세스를 찾으면 얻을 수있는 구조는 부모 프로세스의 프로세스 ID, 즉 앱을 실행 한 프로세스 ID를 제공합니다.

부모 PID를 얻으면 EnumProcessModules()GetModuleFileNameEx()으로 exe 파일 및 기타 속성의 파일 이름을 쉽게 얻을 수 있습니다.

하지만 링크의 코드를 사용할 수 있습니다.

1

왜이 사실을 알아야합니까? Windows는 유닉스처럼 엄격한 부모 프로세스 계층을 유지하지 않습니다. 프로세스가 생성 될 때 부모의 PID를 기록하지만 프로세스가 사라지면 프로세스가 자식을 추적하지 않기 때문에 업데이트되지 않습니다. 업데이트 할 수 없음). 이는 상위 프로세스 PID가 더 이상 존재하지 않는 프로세스를 가리킬 가능성이 있음을 의미합니다. 이론적으로 프로세스 ID는 재사용 될 수 있습니다. 즉, 상위 프로세스 ID가 전혀 다른 프로세스를 가리킬 수 있습니다.

관련 문제