Процес-зомбіВ Unix-подібних системах процес-зомбі (часто позначається, як defunct) — це процес, що завершив виконання, але все ще має запис в таблиці процесів. Цей запис потрібен, щоб батьківський процес міг прочитати код завершення. Термін процес-зомбі походить із загального визначення людини-зомбі. За цією метафорою процес-нащадок помер, але ще не був забраний смертю. На відміну від нормальних процесів, команда kill ніяк не впливає на процес-зомбі. Коли процес завершується, вся пам’ять і пов’язані з ним ресурси звільняються для інших процесів, проте, запис процесу залишається в таблиці процесів. Батьківський процес може прочитати код завершення нащадку за допомогою системного виклику ПрикладиПослідовне очікування процесу-нащадка в визначеному порядку може лишити зомбі довше ніж згаданий „короткий проміжок часу“. Це не обов’язково вада в програмі, а просто концепт програмування, що не часто зустрічається. С #include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
pid_t pids[5];
int i;
for (i = 4; i >= 0; --i) {
pids[i] = fork();
if (pids[i] == 0) {
sleep(i+1);
_exit(0);
}
}
for (i = 4; i >= 0; --i)
waitpid(pids[i], NULL, 0);
}
shell #!/bin/sh
(echo bu VINRARUS &
sleep 666)&
echo Zombie is created only to 666 sec!
Посилання
|
Portal di Ensiklopedia Dunia