Provided by:
manpages-es_1.55-10_all 
NOMBRE
wait3, wait4 - esperan la terminacion de un proceso, al estilo BSD
SINOPSIS
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/wait.h>
pid_t wait3(int *status, int options,
struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options,
struct rusage *rusage);
DESCRIPCI'ON
La funcion wait3 suspende la ejecucion del proceso actual hasta que
finalice un hijo o hasta que se produzca una senal cuya accion sea
finalizar el proceso actual o llamar a una funcion manejadora de
senales. Si un hijo ha terminado ya cuando se realiza la llamada (lo
que se conoce como proceso "zombie"), la funcion regresa
inmediatamente. Todos los recursos del sistema utilizados por el hijo
son liberados.
La funcion wait4 suspende la ejecucion del proceso actual hasta que un
hijo, especificado por el argumento pid, haya terminado o hasta que se
produzca una senal cuya accion sea finalizar el proceso actual o llamar
a una funcion manejadora de senales. Si el hijo especificado por pid
ha terminado cuando se realiza la llamada (lo que se conoce como
proceso "zombie"), la funcion regresa inmediatamente. Todos los
recursos del sistema utilizados por el hijo son liberados.
El valor de pid puede ser uno de los siguientes:
< -1 lo que significa que espera por cualquier proceso hijo cuyo ID
de grupo es igual al valor absoluto de pid.
-1 que significa que espera por cualquier proceso hijo; esto es
equivalente a llamar a wait3.
0 que significa esperar por cualquier proceso hijo cuyo ID de
grupo es igual al del proceso invocador.
> 0 que significa esperar por el proceso hijo cuyo ID es igual a
pid.
El valor de options es un OR de cero o mas de las siguientes
constantes:
WNOHANG
que significa volver inmediatamente si no hay hijo por el que
esperar.
WUNTRACED
que significa volver porque hay hijos que estan parados (estado
stop), y de cuyo estado no se ha recibido notificacion.
Si status no es NULL, wait3 o wait4 almacenan informacion de estado en
la memoria apuntada por status.
Este estado puede ser evaluado con las siguientes macros (que toman
como argumento el propio buffer (un int) -- ino un puntero al buffer!):
WIFEXITED(status)
es distinto de cero si el hijo termino normalmente.
WEXITSTATUS(status)
evalua los ocho bits menos significativos del codigo de retorno
del hijo que termino, que pueden haber sido activados como un
argumento en la llamada a la funcion exit() o como un argumento
para un return en el programa principal. Esta macro solo puede
ser evaluada si WIFEXITED devolvio un valor distinto de cero.
WIFSIGNALED(status)
devuelve "true" si el proceso hijo termino a causa de una senal
no capturada.
WTERMSIG(status)
devuelve el numero de la senal que causo el final del proceso
hijo. Esta macro solo puede ser evaluada si WIFSIGNALED devolvio
un valor distinto de cero.
WIFSTOPPED(status)
devuelve "true" si el proceso hijo que provoco el retorno esta
actualmente parado; esto solo es posible si la llamada se hizo
usando WUNTRACED.
WSTOPSIG(status)
devuelve el numero de la senal que provoco la parada del proceso
hijo. Esta macro solo puede ser evaluada si WIFSTOPPED devolvio
un valor distinto de cero.
Si rusage no es NULL, se rellenara la estructura structrusage, segun se
define en <sys/resource.h>, con informacion contable. Ver getrusage(2)
para mas detalles.
VALOR DEVUELTO
El ID del proceso hijo que termino, -1 en caso de error (en particular,
cuando no existe un proceso hijo, por el que no esperamos, del tipo
especificado) o cero si se utilizo WNOHANG y no habia ningun hijo
disponible todavia. En los dos ultimos casos errno sera activado
convenientemente.
ERRORES
ECHILD No existe un proceso hijo como el especificado y por el que no
esperamos.
EINTR si no se activo WNOHANG y se capturo una senal no bloqueada o
una SIGCHLD.
OBSERVACIONES
Incluir <sys/time.h> no es obligatorio en la actualidad, pero
incrementa la portabilidad. (De hecho, <sys/resource.h> define la
estructura rusage con campos de tipo struct timeval definida en
<sys/time.h>.)
El prototipo para estas funciones esta disponible solo si _BSD_SOURCE
esta definida (bine explicitamente, o implicitamente, no definiendo
_POSIX_SOURCE o compilando con la opcion -ansi).
CONFORME A
SVr4, POSIX.1
V'EASE TAMBI'EN
signal(2), getrusage(2), wait(2), signal(7)