2012-12-04 4 views
2

나는 책을 읽고이 문장을 발견했습니다 : Windows does not maintain parent-child relationships among processes like Unix does. 불행히도, 더 이상의 설명은 없습니다. 그렇다면 유닉스와 윈도우 프로세스 간의 부모 - 자식 관계의 관점에서의 차이점은 무엇입니까?Windows의 부모 - 자식 관계

답변

4

Windows에서는 직접 getppid API를 제공하지 않으므로 프로세스를 포크하고 부모의 모든 메모리를 상속하는 Win32 API가 없습니다 (Windows의 경우 자식은 허용되는 경우에만 핸들을 상속합니다). 프로세스 탐색기에서 사용되는 것과 같이 간접적 인 방식으로 프로세스의 부모 PID를 얻는 경우에도 프로세스의 부모 PID에 대한 정보 만 캡처되므로 올바른 프로세스를 가리키는 PID를 얻을 수있는 것은 아닙니다. 부모가 자녀보다 먼저 죽는 경우에는 결코 갱신되지 않는다.

따라서 부모 PID를 얻는 간접적 인 방법은이 프로세스를 만든 프로세스의 PID와 그 이상을 알려줍니다. (유닉스 나 init 프로세스가 고아 프로세스를 자식으로 사용하는 것과는 달리) 그리고 Windows에서는 고아 프로세스 나 좀비에 관해서 이야기하지 않습니다.

아마도 더있을 수 있습니다. 이 모든 것 (및 그 이상)은 "창은 부모 - 자식 관계를 유지하지 않습니다"라는 문구에 해당합니다.