Código de retorno

El código de retorno ( estado de salida en inglés  ) del programa es un valor entero que el proceso secundario devuelve al proceso principal en el momento de la terminación.

Al ejecutar programas de computadora, el sistema operativo crea una entidad llamada proceso , con la cual rastrea y mantiene un registro de la ejecución del programa. En sistemas operativos multitarea como Unix o Linux , un proceso existente puede generar un nuevo proceso. El proceso creador se denomina proceso "principal", y el proceso que se crea se denomina proceso "secundario". Una vez creado, el proceso secundario se ejecuta en paralelo con el principal. Esta técnica de generación de procesos secundarios se utiliza para transferir algo de trabajo al proceso secundario, en situaciones en las que el proceso principal no necesita dedicarle tiempo. Cuando un proceso hijo termina su ejecución, ya sea de forma automática o explícita, en la dirección del programador, hace la llamada al sistema de salida , pasándole un número entero. El resultado de la llamada de salida es que se pasa un número entero al proceso principal, que puede recuperarlo con la llamada al sistema de espera .

Semántica

Los procesos padre e hijo pueden interpretar diferentes códigos de retorno a su manera. Por ejemplo, es una práctica común devolver cero si el proceso secundario tiene éxito. También es posible que el proceso principal sepa el motivo del bloqueo, como la cancelación debido a la recepción de una señal .

Cada programa determina el conjunto exacto de códigos de retorno a su manera. En muchos sistemas, cuanto mayor sea el valor del código de retorno entero, más grave será la causa del error. Otra técnica comúnmente utilizada es pasar un conjunto de banderas configurando bits individuales, como lo hace la utilidad fsck .

A veces, si los códigos de retorno se eligieron con este caso de uso en mente, el código se puede usar como número de rama de código para una mayor ejecución en el proceso principal.

SO Amiga

AmigaOS define tres niveles de códigos de retorno

Shell y lenguajes de script

El código de retorno de una utilidad llamada desde la línea de comando es el resultado de la llamada al sistema waitid o su equivalente. El código de retorno completo de 32 bits solo está disponible a través de la llamada a waitid y las interfaces más antiguas devuelven un número con el valor truncado en un byte.

Desde el punto de vista de los shells, un comando con un código de retorno cero tuvo éxito, mientras que un comando con un código de retorno distinto de cero falló. El resultado es una situación ilógica en la que existe una forma estándar de informar el éxito y una gran selección de formas diferentes de enumerar las causas de un error. Si el comando terminó después de recibir la señal número N, el shell configurará $? valor superior a 128. La mayoría de los shells usan 128+N, pero ksh93 usa 256+N.

Si no se encuentra el comando, el shell debe devolver el número 127. Si se encuentra el comando pero no es ejecutable, se devuelve 126. Sin embargo, no todos los shells siguen estas reglas.

Si el comando falló debido a un error durante la expansión o redirección de la expresión, el código de retorno será mayor que cero.

DOS

En la terminología de DOS, errorlevel  es un valor de salida entero devuelto por un programa ejecutable:

mov ah, 4Ch
mov al, xx
int 21h
donde xx es el código de retorno en el rango de 00h a 0FFh

Véase también

Enlaces