В Unix-подібних системах процес-зомбі (часто позначається, як defunct) — це процес, що завершив виконання, але все ще має запис в таблиці процесів. Цей запис потрібен, щоб батьківський процес міг прочитати . Термін процес-зомбі походить із загального визначення людини-зомбі. За цією метафорою процес-нащадок помер, але ще не був забраний смертю. На відміну від нормальних процесів, команда kill ніяк не впливає на процес-зомбі.
Коли процес завершується, вся пам’ять і пов’язані з ним ресурси звільняються для інших процесів, проте, запис процесу залишається в таблиці процесів. Батьківський процес може прочитати за допомогою системного виклику wait
, після чого процес-зомбі буде прибрано зі списку процесів. Виклик wait
може бути зроблено послідовно, але зазвичай його виконують в обробнику подій для SIGCHLD, який отримує батьківський процес, коли нащадок завершується.
Приклади
Послідовне очікування процесу-нащадка в визначеному порядку може лишити зомбі довше ніж згаданий „короткий проміжок часу“. Це не обов’язково вада в програмі, а просто концепт програмування, що не часто зустрічається.
С
#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!
Посилання
- Zombie process usenet post [ 1 лютого 2020 у Wayback Machine.]
- UNIX FAQ Question 3.13: How do I get rid of zombie processes that persevere? [ 30 вересня 2020 у Wayback Machine.]
- Zombies(5) [ 9 листопада 2020 у Wayback Machine.] (from UNIX System Concepts )
- How to kill defunct processes [ 22 квітня 2010 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
V Unix podibnih sistemah proces zombi chasto poznachayetsya yak defunct ce proces sho zavershiv vikonannya ale vse she maye zapis v tablici procesiv Cej zapis potriben shob batkivskij proces mig prochitati Termin proces zombi pohodit iz zagalnogo viznachennya lyudini zombi Za ciyeyu metaforoyu proces nashadok pomer ale she ne buv zabranij smertyu Na vidminu vid normalnih procesiv komanda kill niyak ne vplivaye na proces zombi Koli proces zavershuyetsya vsya pam yat i pov yazani z nim resursi zvilnyayutsya dlya inshih procesiv prote zapis procesu zalishayetsya v tablici procesiv Batkivskij proces mozhe prochitati za dopomogoyu sistemnogo vikliku a href wiki Wait title Wait wait a pislya chogo proces zombi bude pribrano zi spisku procesiv Viklik wait mozhe buti zrobleno poslidovno ale zazvichaj jogo vikonuyut v obrobniku podij dlya SIGCHLD yakij otrimuye batkivskij proces koli nashadok zavershuyetsya PrikladiPoslidovne ochikuvannya procesu nashadka v viznachenomu poryadku mozhe lishiti zombi dovshe nizh zgadanij korotkij promizhok chasu Ce ne obov yazkovo vada v programi a prosto koncept programuvannya sho ne chasto zustrichayetsya S include lt sys wait h gt include lt stdlib h gt include lt unistd h gt int main void pid t pids 5 int i for i 4 i gt 0 i pids i fork if pids i 0 sleep i 1 exit 0 for i 4 i gt 0 i waitpid pids i NULL 0 shell bin sh echo bu VINRARUS amp sleep 666 amp echo Zombie is created only to 666 sec PosilannyaZombie process usenet post 1 lyutogo 2020 u Wayback Machine UNIX FAQ Question 3 13 How do I get rid of zombie processes that persevere 30 veresnya 2020 u Wayback Machine Zombies 5 9 listopada 2020 u Wayback Machine from UNIX System Concepts How to kill defunct processes 22 kvitnya 2010 u Wayback Machine