freeBSD процесс-zombie |
freeBSD процесс-zombie |
klem4 |
Сообщение
#1
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Подскажите как в системе исскуственно повесить зомби. Нигде не могу найти.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
xds |
Сообщение
#2
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Программа создает 10 процессов-зомби:
#include <sys/types.h> Если перед нажатием ENTER посмотреть в ps, то обнаружим 10 процессов в состоянии Z: Код $ ps PID TT STAT TIME COMMAND 21578 p0 Is+ 0:00.25 -ksh (ksh) 2947 p1 Is 0:00.99 -ksh (ksh) 31163 p1 R+ 0:00.00 ps $ parent Zombie process 2 created. Zombie process 1 created. Press ENTER to close parent process... Zombie process 3 created. Zombie process 4 created. Zombie process 5 created. Zombie process 6 created. Zombie process 8 created. Zombie process 9 created. Zombie process 10 created. Zombie process 7 created. ^Z[1] + Suspended parent $ ps PID TT STAT TIME COMMAND 21578 p0 Is+ 0:00.25 -ksh (ksh) 27795 p1 Z 0:00.00 (parent) 8359 p1 Z 0:00.00 (parent) 9088 p1 Z 0:00.00 (parent) 23949 p1 Z 0:00.00 (parent) 14734 p1 Z 0:00.00 (parent) 1312 p1 Z 0:00.00 (parent) 26772 p1 Z 0:00.00 (parent) 22099 p1 Z 0:00.00 (parent) 7346 p1 Z 0:00.00 (parent) 20051 p1 Z 0:00.00 (parent) 2947 p1 Is 0:01.00 -ksh (ksh) 18621 p1 T 0:00.05 parent 13552 p1 R+ 0:00.01 ps $ -------------------- The idiots are winning.
|
klem4 |
Сообщение
#3
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
хех, так просто ? А почему ихнее имущество не будет передано init ?
UPDATE аа перед завершением программы нужно ps смотреть, я правильно понял ? то есть после нажатия Enter они будут всетаки удалены из списка процессов ? Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
xds |
Сообщение
#4
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
аа перед завершением программы нужно ps смотреть, я правильно понял ? Да, конечно - уничтожение родительского процесса всегда приводит к уничтожению дочерних. Проблема становится в полный рост, когда родительский процесс - демон.то есть после нажатия Enter они будут всетаки удалены из списка процессов ? -------------------- The idiots are winning.
|
klem4 |
Сообщение
#5
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
к сожалению, все чего удалось добиться - поучить статусы RE для процессов ...
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
xds |
Сообщение
#6
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Очень странно. Подробно опиши, что ты делал (желательно со скрином консоли).
-------------------- The idiots are winning.
|
klem4 |
Сообщение
#7
|
Perl. Just code it! Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
да все по логике, как ты и посоветовал ... когда вылезает надпись press enter, скидываю основнной процесс ^Z и смотрю ps, пробовал также запускать программу в фоновом режиме, результат аналогичный.
Кстати, какой результат у тебя выдаст такой код: #include <unistd.h> вот тут скорее ребенок должен стать зомби, но и в этом случае этого не происходит, информация о нем передается init -- PPID = 1 Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
xds |
Сообщение
#8
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
вот тут скорее ребенок должен стать зомби, но и в этом случае этого не происходит, информация о нем передается init -- PPID = 1 Не должен, т. к. он не завершен (из-за sleep пребывает в состоянии I). Зомби возможны только, если дочерний процесс завершен, а родительский продолжает работать и не удосужился прочитать статус завершения дочернего. В твоем случае незавершенные дочерние процессы передаются корневому. Были бы завершенными - исчезли бы вместе с родительским.Зомби - это состояние, когда процесс завершен, память освобождена, а система хранит статус завершения до его востребования родительским процессом. -------------------- The idiots are winning.
|
Текстовая версия | 28.03.2024 18:39 |