Aggiunta semop
[gapil.git] / sources / HandSIGCHLD.c
1 #include <errno.h>       /* error simbol definitions */
2 #include <signal.h>      /* signal handling declarations */
3 #include <sys/types.h>
4 #include <sys/wait.h>
5
6 #include "macros.h"
7
8 void HandSIGCHLD(int sig)
9 {
10     int errno_save;
11     int status;
12     pid_t pid;
13     /* save errno current value */
14     errno_save = errno;
15     /* loop until no */
16     do {
17         errno = 0;
18         pid = waitpid(WAIT_ANY, &status, WNOHANG);
19         if (pid > 0) {
20             debug("child %d terminated with status %x\n", pid, status);
21         }
22     } while ((pid > 0) && (errno == EINTR));
23     /* restore errno value*/
24     errno = errno_save;
25     /* return */
26     return;
27 }