2013-08-15 3 views
0

이론은 말하면 기다림이 부모에게 전화되지 않으면 종료 된 자식과 자식에 대한 정보를 얻지 못할 것이고 좀비가된다. 그러나 우리가 프로세스를 생성 할 때 기다리지 않아도 좀비는 생성되지 않습니다. 내 질문은 대기가 자동으로 호출되는지 여부입니다.대기 시스템 호출을 사용할 때

+0

아니요. 그러나 http://advancedlinuxprogramming.com/에서 해당 질문에 대한 전체 장을 읽으십시오 ... –

답변

0

많은 언어에서 하위 프로세스를 호출하면 wait()이 호출됩니다. 예를 들어, 루비 나 펄, 당신은 종종처럼 쉘 :이 wait()를 호출을 포함하여 당신을위한 마법의 무리를하고있다

#!/usr/bin/ruby 
system("ls /tmp") 
`ls /tmp` 

. 실제로 Ruby는 프로그램을 계속 진행하기 전에 출력을 수집하기 위해 프로세스가 종료 될 때까지 기다려야합니다.

쉽게 같이 좀비를 만들 수 있습니다

#!/usr/bin/ruby 
if fork 
    sleep 1000 # Parent ignoring the child 
else 
    exec "ls /tmp" # short-lived child 
end 

우리가 수동으로 포크/간부, 거기에 우리 wait()를 호출 마법이 없으며, 좀비가 생성됩니다. 그러나 부모가 종료하면 좀비 자식은 init으로 다시 부모가되며, 좀비를 치료하기 위해 항상 wait()이 호출됩니다.

관련 문제