Зомби-процесс - это тип процесса, который был завершен, но запись которого все еще остается в таблице процессов из-за отсутствия связи между дочерним и родительским процессом. Небольшая программа, разработанная в этом учебнике, может быть полезна для учебных целей. Например, когда речь идет об обнаружении зомби-процессов в Linux.
Создание фиктивного зомби-процесса в Debian
Откройте редактор nano и вставьте код представленный ниже.
1 | nano zombie.c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #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; }/* Your code... */ |
Сохраните этот файл под именем zombie.c. Процесс зомби, созданный с помощью этого кода, будет работать в течение 120 секунд. Вы можете настроить продолжительность времени (в секундах) в функции sleep.
Далее откройте терминал и выполните следующую команду для компиляции приведенного выше кода.
1 | cc zombie.c -o zombie |
После этой команды в вашем текущем каталоге должен быть создан исполняемый объектный файл.
Запустите файл zombie:
1 | ./zombie |
Выполнив следующую команду с grep, вы получите ID родителя процесса zombie.
1 | ps axo stat,ppid,pid,comm | grep -w defunct |
Вот так можно создать фиктивный зомби-процесс в Debian. Надеюсь, у вас не возникнет трудностей при выполнении этого руководства.