How does the zombie process manifest itself?

kill -s SIGCHLD
The above code is for killing any zombie process, but my question is:
Is there a way by which the zombie process itself manifests itself?

+5
source share
1 answer

steenhulthin is correct, but until he moves around, someone can also answer him here. The zombie process exists between the time when the child process ends and the time when the parent calls one of the functions wait()to get its exit status.

A simple example:

/* Simple example that creates a zombie process. */

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
    pid_t cpid;
    char s[4];
    int status;

    cpid = fork();

    if (cpid == -1) {
        puts("Whoops, no child process, bye.");
        return 1;
    }

    if (cpid == 0) {
        puts("Child process says 'goodbye cruel world.'");
        return 0;
    }

    puts("Parent process now cruelly lets its child exist as\n"
         "a zombie until the user presses enter.\n"
         "Run 'ps aux | grep mkzombie' in another window to\n"
         "see the zombie.");

    fgets(s, sizeof(s), stdin);
    wait(&status);
    return 0;
}
+7
source

All Articles