bionic (2) wait3.2.gz

Provided by: manpages-es_1.55-10_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)