Provided by: manpages-es_1.55-10_all bug

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)