3 * pidwait.c -- wait for child to exit
12 #ifdef HAVE_SYS_WAIT_H
13 # include <sys/wait.h>
17 pidwait (pid_t id, int sigsok)
29 /* block a couple of signals */
31 sigaddset (&set, SIGINT);
32 sigaddset (&set, SIGQUIT);
33 SIGPROCMASK (SIG_BLOCK, &set, &oset);
37 pid = waitpid(id, &status, 0);
39 while ((pid = wait(&status)) != -1 && pid != id)
44 /* reset the signal mask */
45 SIGPROCMASK (SIG_SETMASK, &oset, &set);
49 return (pid == -1 ? -1 : status);
51 return (pid == -1 ? -1 : status.w_status);