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

NOMBRE

       wait3, wait4 - esperan la terminación 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ÓN

       La  función  wait3  suspende  la ejecución del proceso actual hasta que
       finalice un hijo o hasta que se produzca  una  señal  cuya  acción  sea
       finalizar  el  proceso  actual  o  llamar  a  una función manejadora de
       señales. Si un hijo ha terminado ya cuando se realiza  la  llamada  (lo
       que   se   conoce   como   proceso   "zombie"),   la   función  regresa
       inmediatamente. Todos los recursos del sistema utilizados por  el  hijo
       son liberados.

       La  función wait4 suspende la ejecución del proceso actual hasta que un
       hijo, especificado por el argumento pid, haya terminado o hasta que  se
       produzca una señal cuya acción sea finalizar el proceso actual o llamar
       a una función manejadora de señales.  Si el hijo especificado  por  pid
       ha  terminado  cuando  se  realiza  la  llamada  (lo que se conoce como
       proceso  "zombie"),  la  función  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  más  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 están parados (estado
              stop), y de cuyo estado no se ha recibido notificación.

       Si status no es NULL, wait3 o wait4 almacenan información 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) — ¡no un puntero al buffer!):

       WIFEXITED(status)
              es distinto de cero si el hijo terminó normalmente.

       WEXITSTATUS(status)
              evalúa los ocho bits menos significativos del código de  retorno
              del  hijo  que  terminó, que pueden haber sido activados como un
              argumento en la llamada a la función exit() o como un  argumento
              para  un  return en el programa principal. Esta macro sólo puede
              ser evaluada si WIFEXITED devolvió un valor distinto de cero.

       WIFSIGNALED(status)
              devuelve "true" si el proceso hijo terminó a causa de una  señal
              no capturada.

       WTERMSIG(status)
              devuelve  el  número  de la señal que causó el final del proceso
              hijo. Esta macro sólo puede ser evaluada si WIFSIGNALED devolvió
              un valor distinto de cero.

       WIFSTOPPED(status)
              devuelve  "true"  si el proceso hijo que provocó el retorno está
              actualmente parado; esto sólo es posible si la llamada  se  hizo
              usando WUNTRACED.

       WSTOPSIG(status)
              devuelve el número de la señal que provocó la parada del proceso
              hijo. Esta macro sólo puede ser evaluada si WIFSTOPPED  devolvió
              un valor distinto de cero.

       Si rusage no es NULL, se rellenará la estructura structrusage, según se
       define en <sys/resource.h>, con información contable. Ver  getrusage(2)
       para más detalles.

VALOR DEVUELTO

       El ID del proceso hijo que terminó, -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  utilizó  WNOHANG y no había ningún hijo
       disponible todavía. En  los  dos  últimos  casos  errno  será  activado
       convenientemente.

ERRORES

       ECHILD No  existe  un proceso hijo como el especificado y por el que no
              esperamos.

       EINTR  si no se activó WNOHANG y se capturó una señal  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 está disponible sólo  si  _BSD_SOURCE
       está  definida  (bine  explícitamente,  o implícitamente, no definiendo
       _POSIX_SOURCE o compilando con la opción -ansi).

CONFORME A

       SVr4, POSIX.1

VÉASE TAMBIÉN

       signal(2), getrusage(2), wait(2), signal(7)