2011-04-27 16 views
11

El siguiente código esperará a que finalice un proceso secundario y luego imprimirá su código de retorno.¿Por qué se necesita WEXITSTATUS incluso?

int status; 
wait(&status); 
cout << "return code = " << WEXITSTATUS(status) << endl; 

¿Por qué no se puede almacenar el código de retorno en la variable int? ¿Por qué tiene que convertirse con la función WEXITSTATUS? ¿Qué representa el valor de la variable int no convertida?

Respuesta

14

El int vale más que el código de salida - que también almacena información acerca de cómo termina el proceso, por ejemplo, si se señaliza (WIFSIGNALED) o si exit() fue llamado (WIFEXITED), etc.

El W las macros se utilizan para extraer varias piezas de información del int.

3

status contiene no sólo el valor de retorno del proceso, sino también por qué regresaron la llamada wait(2,3p) (que no siempre puede ser excitante normal del proceso). Las diversas macros W*() se utilizan para dividir el valor devuelto en sus partes constituyentes.

Cuestiones relacionadas