Create zombie process

前端 未结 2 919
孤城傲影
孤城傲影 2021-01-03 23:46

I am interested in creating a zombie process. To my understanding, zombie process happens when the parent process exits before the children process. However, I tried to recr

2条回答
  •  孤街浪徒
    2021-01-04 00:35

    A zombie or a "defunct process" in Linux is a process that has been completed, but its entry still remains in the process table due to lack of correspondence between the parent and child processes. Usually, a parent process keeps a check on the status of its child processes through the wait() function. When the child process has finished, the wait function signals the parent to completely exit the process from the memory. However, if the parent fails to call the wait function for any of its children, the child process remains alive in the system as a dead or zombie process. These zombie processes might accumulate, in large numbers, on your system and affect its performance.

    Below is a c program to creating a Zombie-Process on our system Save this file as zombie.c:

    #include 
    #include 
    #include 
    
    int main ()
    {
      pid_t child_pid;
    
      child_pid = fork ();
      if (child_pid > 0) {
        sleep (60);
      }
      else {
        exit (0);
      }
      return 0;
    }
    

    The zombie process created through this code will run for 60 seconds. You can increase the time duration by specifying a time(in seconds) in the sleep() function.

    Compile this program

    gcc zombie.c
    

    Now run the zombie program:

    ./a.out
    

    The ps command will now also show this defunct process, open a new terminal and use the below command to check the defunct process:

    aamir@aamir:~/process$ ps -ef | grep a.out
    aamir    10171  3052  0 17:12 pts/0    00:00:00 ./a.out
    aamir    10172 10171  0 17:12 pts/0    00:00:00 [a.out]  #Zombie process
    aamir    10177  3096  0 17:12 pts/2    00:00:00 grep --color=auto a.out
    

提交回复
热议问题