| .TH wait 3 |
| .SH NAME |
| wait \- check child process status |
| .SH SYNTAX |
| .B #include <wait.h> |
| |
| int \fBwait_nohang\fP(&\fIwstat\fR); |
| .br |
| int \fBwait_stop\fP(&\fIwstat\fR); |
| .br |
| int \fBwait_stopnohang\fP(&\fIwstat\fR); |
| .br |
| int \fBwait_pid\fP(&\fIwstat\fR,\fIpid\fR); |
| |
| int \fBwait_exitcode\fP(\fIwstat\fR); |
| .br |
| int \fBwait_crashed\fP(\fIwstat\fR); |
| .br |
| int \fBwait_stopped\fP(\fIwstat\fR); |
| .br |
| int \fBwait_stopsig\fP(\fIwstat\fR); |
| |
| int \fIpid\fR; |
| .br |
| int \fIwstat\fR; |
| .SH DESCRIPTION |
| .B wait_nohang |
| looks for zombies (child processes that have exited). |
| If it sees a zombie, |
| it eliminates the zombie, |
| puts the zombie's exit status into |
| .IR wstat , |
| and returns the zombie's process ID. |
| If there are several zombies, |
| .B wait_nohang |
| picks one. |
| If there are children but no zombies, |
| .B wait_nohang |
| returns 0. |
| If there are no children, |
| .B wait_nohang |
| returns -1, |
| setting |
| .B errno |
| appropriately. |
| |
| .B wait_stopnohang |
| is similar to |
| .BR wait_nohang , |
| but it also looks for children that have stopped. |
| |
| .B wait_stop |
| is similar to |
| .BR wait_stopnohang , |
| but if there are children it will pause waiting for one of them |
| to stop or exit. |
| |
| .B wait_pid |
| waits for child process |
| .I pid |
| to exit. |
| It eliminates any zombie that shows up in the meantime, |
| discarding the exit status. |
| |
| .B wait_stop |
| and |
| .B wait_pid |
| retry upon |
| .BR error_intr . |
| .SH "STATUS PARSING" |
| If the child stopped, |
| .B wait_stopped |
| is nonzero; |
| .B wait_stopsig |
| is the signal that caused the child to stop. |
| |
| If the child exited by crashing, |
| .B wait_stopped |
| is zero; |
| .B wait_crashed |
| is nonzero. |
| |
| If the child exited normally, |
| .B wait_stopped |
| is zero; |
| .B wait_crashed |
| is zero; |
| and |
| .B wait_exitcode |
| is the child's exit code. |
| .SH "SEE ALSO" |
| wait(2), |
| error(3) |