Zombie process is the process which died immediately and whose parent didn’t cared to handled the status of child death. When a child process exits, it is not immediately cleared off the process table. Instead, a signal is sent to its parent process, which needs to acknowledge it’s child’s death, and only then the child process is completely removed from the system. If a parent is not written by taking care of handling acknowledgement from child, the child becomes zombie.
Such process’s continues to run in
<defunct>
state till the parent is exited completely.
$ vim create_zombie.c
int main(int argc, char **argv) {
pid_t child_pid;
int child_status;
child_pid = fork();
switch (child_pid) {
case -1:
printf("error: we can use perror\n");
perror("fork");
exit(1);
case 0:
printf("child is getting dead immediately\n");
exit(0);
default:
printf("parent process continuing to execute, but not cared of child is dead or alive\n");
sleep (180);
}
return 0;
}
you can run below program as,
$ gcc -o our_zombie_child create_zombie.c
$ ./our_zombie_child
This program makes parent goes sleep for 180 sec, meantime child has already died, but parent process doesn’t handles the child’s death since it was already in sleep ( normally this child death report needs to handled using signal in parent process )
so now, you can open another terminal and type
$ ps -ax | grep defunct
5208 pts/1 Z+ 0:00 [our_zombie_chil] defunct
where “ps” command showed, child process which we created became zombie. [ as indicated by defunct ]
1 thought on “What is Zombie process and How to create zombie process in Linux ?”