.TH WAITPID 2 .UC 4 .SH NAME waitpid \- wait for a given pid .SH SYNOPSIS .nf .B #include .B int waitpid (pid_t pid, unsigned long *stat_addr, int options); .fi .SH DESCRIPTION .B waitpid() waits for .I pid as specified in .I options. .PP Alowable options are: .br .B WUNTRACED - set when we want to be notified of successful exit of .I pid .br .B WNOHANG - set if we don't want to wait around for a long time. .PP .B waitpid() will exit when : .nf 1. The waited for process terminates or enters a ZOMBIE state. 2. An unblocked signal, or SIGCHLD is caught. 3. An error condition occurs. .fi .PP .I stat_addr is non NULL, then unless .B WUNTRACED is set and the status of .I pid is not .B TASKSTOPPED then .I *stat_addr will be set to the exit code of .I pid. .PP .B waitpid() will return one of the following : .br .nf 1. pid if the process terminates. 2. 0 if we told it to not hang, and the process hasn't terminated. 3. A negative value indicating an error. .fi .SH ERRORS .B -ERESTARTSYS is returned if .B WNOHANG was not set, when an unblocked signal or SGICHLD was caught. .PP .B -ECHILD is returned if the child process didn't exist, or WUNTRACED was unclear and there was no exit code. .SH FILES linux/kernel/signal.c .br /usr/include/linux/sys.h .br /usr/include/unistd.h .SH SEE ALSO wait(3)