top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

How will a parent process know that a child is dead?

+1 vote
604 views
How will a parent process know that a child is dead?
posted Nov 30, 2015 by Kali Mishra

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

0 votes

Fork returns the child pid (process identifier) in the parent process, using the waitpid parent can not if child is alive or not

Something like

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


int  main(int argc, char *argv[])
{
    pid_t cpid, w;
    int status;


    cpid = fork();
    if (cpid == -1) { perror("fork"); exit(EXIT_FAILURE); }


    if (cpid == 0) {            /* Code executed by child */
        printf("Child PID is %ld\n", (long) getpid());
        if (argc == 1)
            pause();                    /* Wait for signals */
        _exit(atoi(argv[1]));
    } else {                    /* Code executed by parent */
        do {
            w = waitpid(cpid, &status, WUNTRACED | WCONTINUED);
            if (w == -1) { perror("waitpid"); exit(EXIT_FAILURE); }


            if (WIFEXITED(status)) {
                printf("exited, status=%d\n", WEXITSTATUS(status));
            } else if (WIFSIGNALED(status)) {
                printf("killed by signal %d\n", WTERMSIG(status));
            } else if (WIFSTOPPED(status)) {
                printf("stopped by signal %d\n", WSTOPSIG(status));
            } else if (WIFCONTINUED(status)) {
                printf("continued\n");
            }
        } while (!WIFEXITED(status) && !WIFSIGNALED(status));
        exit(EXIT_SUCCESS);
    }
}

Output

$ ./a.out &
Child PID is 12345
[1] 12344
$ kill -STOP 12345
stopped by signal 19
$ kill -CONT 12345
continued
$ kill -TERM 12345
killed by signal 15
[1]+  Done                    ./a.out
answer Dec 1, 2015 by Salil Agrawal
Similar Questions
+4 votes

When a process is created using vfork() child process is created and starts running in the parent process address space, until exit() or exec() is called.

What happens to the parent process, if some one kills the child process before calling the exit()/exec()?

+2 votes

Same question for Thread also..
If i use exit system call in thread then what happens to the main process?

+1 vote

As far as i know when a process is created, 8MB of stack is allocated to it.
Is it right?

If not then is there any fix size or not?

If yes then please answer and Help To solve this question also.

...