7/01/2011

zombieプロセスの作り方

何かと邪魔なzombieプロセスだけど、テストのため敢えて作らなきゃいけなくなったのでzombleプロセス生成ツールの作り方を教えてもらった。
#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] 
root      2708  0.0  0.1  65408   828 pts/1    R+   10:12   0:00 grep Z
[root@TEST ~]#
11行目のsleep(xx)←この秒数を超えるとzombieが消える。
zombie生存時間を変える度にコンパイルし直すのはめんどいのでshellで出来るか調べたけれど無理っぽい。

0 件のコメント:

コメントを投稿