#include <stdlib.h> #include <sys/types.h> #include <unistd.h> int main () { pid_t child_pid; child_pid = fork (); if (child_pid > 0) { sleep (60); } else { exit (0); } return 0; }
上記ソースをmake_zombie.cファイルとしてオブジェクトをmake_zombieとしてコンパイル。
で、make_zombieを1回実行する毎にzombieが1人増える。
[root@TEST ~]# gcc make_zombie.c -o make_zombie [root@TEST ~]# ./make_zombie
1回実行すると、こんな感じ。
[root@TEST ~]# ps aux| grep Z USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2706 0.0 0.0 0 0 pts/1 Z 10:12 0:00 [make_zombie]11行目のsleep(xx)←この秒数を超えるとzombieが消える。root 2708 0.0 0.1 65408 828 pts/1 R+ 10:12 0:00 grep Z [root@TEST ~]#
zombie生存時間を変える度にコンパイルし直すのはめんどいのでshellで出来るか調べたけれど無理っぽい。