second make how example compiler c unix signals posix fork

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.