:: Re: [DNG] Reaping orphan processes.
Top Page
Delete this message
Reply to this message
Author: aitor
To: dng
Subject: Re: [DNG] Reaping orphan processes.
Hi Hendrik,

On 4/3/23 18:44, Hendrik Boom wrote:
> Why can't they just terminate by themselves?

Consider the following example:

/* ---------- example.c ------------ */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
    int pid;

        printf("\nI am the child\n");
        return 0;
            printf("\nI am the parent\n");

    return 0;

/* ---------------------- */

Compile with `gcc example.c -o example` and run it.

Now get the pid of both the parent and the child. Say:

$ pidof example

30260  30259

During the first 60 seconds you'll find the following line in "/proc/30260/status":

    State:    Z (sleeping)

that will be turned into:

    State:    Z (zombie)

at the end of the delay period. In this example, the child became a zombie process
because it exited but its parent is still alive and has not called wait() on it.

In this scenario, if you run the `ps` command you'll still find both processes; that is,
the original process (which is the parent spawned by the shell) and its child:

$ ps -A | grep example
30259 pts/1    00:00:36 example
30260 pts/1    00:00:00 example <defunct>

However, you'll not be able to terminate the zombie process by sending a signal to it.