Proces zombie je typ procesu, který byl dokončen, ale jehož záznam stále zůstává v tabulce procesů kvůli nedostatečné komunikaci mezi podřízeným a nadřazeným procesem. Malý program vyvinutý v tomto tutoriálu může být užitečný pro účely učení. Např. pokud jde o detekci zombie procesů pod Linuxem.
V tomto tutoriálu vytvořím fiktivní zombie proces v Debianu 10.
Vytvoření fiktivního zombie procesu v Debianu 10
Otevřete poznámkový blok a vložte následující kód.
#include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main () { pid_t child_pid;child_pid = fork (); if (child_pid > 0) { sleep (120); } else { exit (0); } return 0; }
Uložte tento soubor jako zombie.c . Proces zombie vytvořený tímto kódem poběží 120 sekund. Dobu trvání (v sekundách) můžete upravit ve funkci spánku.
Dále otevřete terminál a spusťte následující příkaz pro kompilaci výše uvedeného kódu.
cc zombie.c -o zombie
Po tomto příkazu by měl být ve vašem aktuálním adresáři vytvořen spustitelný cílový soubor.
Spusťte soubor zombie:
./zombie
Když provedete následující příkaz s grep, získáte rodičovské ID procesu zombie.
ps axo stat,ppid,pid,comm | grep -w defunct
Takže takto vytvoříte fiktivní zombie proces v Debianu 10. Doufám, že s následováním tohoto tutoriálu nebudete mít žádné potíže.