Зомбита и проста обработка на сигнали
Когато дъщерен процес умре преди родителският процес, ядрото го поставя в специално състояние наречено зомби (zombie). Процесът в това състояние чака родителски процес да се допита до неговия статус и едва след това дъщерният процес престава да съществува като зомби. Ако родителският процес никога не запита за състоянието на дъщерният процес, тогава зомбито се превръща в призрак (ghost), което е много лоша практика. Ако родителският процес завърши преди дъщерните му процеси, то техен родител става началният процес. Началният процес, от своя страна, периодично изчаква всички свои дъщерни процеси, като по този начин гарантира, че никое от тях няма да остане зомби.
Изчакване на процес:
Обработка на сигнали:
Какво се случва обаче, ако родителският процес умре преди дъщерният процес или ако той умре, преди да има възможност да изчака своите зомбита? Всеки път, когато даден процес се прекратява, ядрото на Линукс преглежда списъка на дъщерните процеси и ги възпроизвежда на началният процес (идентификатор на процеса pid = 1). Това гарантира, че никой процес няма да остане без родител. Началният процес, от своя страна, периодично изчаква всички свои дъщерни процеси, като по този начин гарантира, че никое от тях няма да остане зомби за твърде дълго време. Въпреки че това все още се счита за добра практика, тази предпазна мярка означава, че краткотрайните процеси не трябва да се притесняват прекомерно да чакат всичките си деца.
Last updated