33.1k views
4 votes
Modify your solution to Problem 8.24 so that one (and only one) child installs a Segmentation-fault handler which prints an error message and exits. What is the output of the program after this change?

User Bretauv
by
3.9k points

1 Answer

3 votes

/* Figure 8.18 */ #include "csapp.h" #define N 2 int main() int status, i; pid_t pid; /* Parent creates N children */ for (i = 0; i < N; i++) if ((pid = Fork ()) == 0) /* child */ exit(100+i); /* Parent reaps N children in no particular order */ while ((pid = waitpid(-1, &status, 0)) > 0) if (WIFEXITED (status) ) printf("child %d terminated normally with exit status=%d\\", pid, WEXITSTATUS (status)); else printf("child %d terminated abnormally\\", pid) ; /* The normal termination is if there are no more children */ if (errno != ECHILD) unix_error("waitpid error"); exit(0);

Hope this helps!

User Giacomoni
by
4.0k points