c - make - ¿Qué devuelve WEXITSTATUS(estado)?
sleep en c ubuntu (1)
Estoy tratando de entender cómo funciona WEXITSTATUS(status)
. Me he encontrado con un fragmento de código donde el valor de retorno de WEXITSTATUS(status)
se agrega a una variable.
Aquí está el fragmento:
waitpid(-1, &status, 0);
counter += WEXITSTATUS(status);
¿Cómo se puede calcular el valor de retorno de WEXITSTATUS
?
WEXITSTATUS(stat_val)
es una macro (de hecho, no " devuelve " algo, sino que "evalúa" a algo).
Para <sys/wait.h>
cómo funciona, le gustaría buscarlo en los encabezados (que deberían ser #include
d a través de <sys/wait.h>
) que vienen con el compilador de C que usa.
La implementación de este marco puede diferir de un compilador de C a otro.
Tenga en cuenta que esta macro solo proporciona un valor razonable, si la macro WIFEXITED(stat_val)
le dio un valor desigual a 0
.
Verbatim de la especificación POSIX de waitpid()
:
WEXITSTATUS ( stat_val )
Si el valor de WIFEXITED ( stat_val ) no es cero, esta macro evalúa los 8 bits de orden inferior del argumento de estado que el proceso hijo pasó a _exit () o exit () , o el valor que el proceso hijo devolvió desde main () .
La motivación detrás de agregar el código (s) de retorno de un programa en particular solo es conocida por el autor del código y la documentación esperanzadamente existente.