Estado de salidaEl estado de salida o código de salida (en inglés: exit status) de un proceso en programación informática es un número que el proceso proceso hijo envía a un proceso padre cuando ha terminado de ejecutar un procedimiento específico o tarea delegada. En DOS, esto se conoce como errorlevel. Cuando se ejecutan programas informáticos, el sistema operativo crea una entidad abstracta llamada proceso en la que se mantiene el estado de ese programa. En sistemas operativos multitarea como Unix o Linux, los procesos activos pueden crear nuevos procesos. El proceso que engendra otro se denomina proceso padre, mientras que los creados son procesos hijos. Los procesos hijos se ejecutan simultáneamente con el proceso padre. La técnica de engendrar procesos hijo se utiliza para delegar algún trabajo a un proceso hijo cuando no hay una razón para detener la ejecución del padre. Cuando el proceso hijo termina de ejecutarse, llama a la llamada al sistema exit. Esta llamada al sistema facilita el paso del código de estado de salida al proceso padre, que puede recuperar este valor utilizando la llamada al sistema wait. SemánticaEl padre y el hijo pueden tener un acuerdo sobre el significado de los estados de salida. Por ejemplo, es una práctica común en programación que un proceso hijo devuelva cero al padre cuando finaliza con éxito. Además de este valor de retorno del proceso hijo, otra información, como la forma en que el proceso terminó, también puede estar disponible para el proceso padre. Puede haber terminado normalmente o debido a una señal. El conjunto específico de códigos devueltos es único para el programa que lo establece. Típicamente indica éxito o fracaso. El valor del código devuelto por la función o programa puede indicar una causa específica de fallo. En muchos sistemas, cuanto más alto es el valor, más grave es la causa del error.[1] Alternativamente, cada bit puede indicar una condición diferente, siendo estos evaluados por el operador o para dar el valor final; por ejemplo, fsck hace esto. A veces, si los códigos están diseñados con este propósito en mente, pueden ser utilizados directamente en la lógica del proceso padre para evitar comprobaciones adicionales. AmigaOSEn AmigaOS, MorphOS y AROS, se definen cuatro niveles:
Shell y scriptsLos scripts de shell suelen ejecutar comandos y capturar sus estados de salida. Para los propósitos del shell, un comando que sale con un estado de salida cero ha tenido éxito. Un estado de salida distinto de cero indica un fallo. Este esquema aparentemente contraintuitivo se utiliza para que haya una forma bien definida de indicar éxito y diferentes formas de indicar fallos. Cuando un comando es terminado por una señal cuyo número es N, el shell establece la variable $? a un valor mayor que 128. La mayoría de los shells utilizan 128+N. La mayoría de los shells utilizan 128+N, mientras que ksh93 utiliza 256+N. Si no se encuentra un comando, el shell debería devolver el estado 127. Si se encuentra un comando pero no es ejecutable, el estado de retorno debe ser 126.[2] Tenga en cuenta que este no es el caso para todos los shells. Si un comando falla debido a un error durante la expansión o redirección, el estado de salida es mayor que cero. Lenguaje CEl lenguaje de programación C permite a los programas que salen o vuelven de la función main señalar el éxito o el fracaso devolviendo un entero, o devolviendo las macros El valor de retorno de Aparte de cero y las macros DOSEn terminología DOS, un errorlevel es un código de salida entero devuelto por un programa ejecutable o subrutina. Los niveles de error suelen oscilar entre 0 y 255.[4][5][6][7] En DOS sólo hay 256 códigos de error disponibles, pero DR-DOS 6.0 y superiores soportan códigos de error de 16 bits al menos en CONFIG.SYS.[6] Con 4DOS y DR-DOS COMMAND.COM, los códigos de salida (en trabajos por lotes) pueden establecerse mediante la orden EXIT n[6] y (en CONFIG.SYS) a través de la orden ERROR=n.[6] Los estados de salida son a menudo capturados por programas de procesamiento por lotes a través de comandos IF ERRORLEVEL.[4][6] DOS multiusuario soporta una variable de entorno reservada llamada %ERRORLVL% que se actualiza automáticamente durante el retorno de las aplicaciones. COMMAND.COM, bajo DR-DOS 7.02 y superior, soporta una pseudo variable de entorno similar %ERRORLVL% así como %ERRORLEVEL%. En CONFIG.SYS, DR DOS 6.0 y superior soporta ONERROR para comprobar el estado de carga y el código de retorno de los controladores de dispositivos y el código de salida de los programas.[6] JavaEn Java, cualquier método puede llamar a OpenVMSEn OpenVMS, el éxito se indica con valores impares y el fracaso con valores pares. El valor es un entero de 32 bits con los subcampos: bits de control, número de instalación, número de mensaje y gravedad. Los valores de gravedad se dividen entre éxito (Success, Informational) y fracaso (Warning, Error, Fatal).[9] POSIXEn Unix y otros sistemas compatibles con POSIX, el proceso padre puede recuperar el estado de salida de un proceso hijo utilizando la familia de llamadas al sistema Las interfaces En la llamada al sistema Los sistemas compatibles con POSIX suelen utilizar una convención de cero para éxito y distinto de cero para error.[14] Se han desarrollado algunas convenciones en cuanto a los significados relativos de varios códigos de error; por ejemplo GNU recomienda que los códigos con el bit alto se reserven para errores graves.[3] Los sistemas operativos derivados de BSD han definido un extenso conjunto de interpretaciones preferidas. Los significados para los 15 códigos de estado de 64 a 78 están definidos en sysexits.h.[15] Estos históricamente derivan de sendmail y otros servidores de correo, pero desde entonces han encontrado uso en muchos otros programas.[16] La Guía Avanzada de Bash-Scripting y /usr/include/sysexits.h contienen información sobre el significado de los códigos de estado de salida distintos de 0.[17] WindowsWindows utiliza enteros de 32 bits sin signo como códigos de salida,[18][19] aunque el intérprete de comandos los trata como con signo.[20] Los códigos de salida son referenciados directamente, por ejemplo, por el intérprete de línea de comandos CMD.exe en la terminología Véase tambiénReferencias
Information related to Estado de salida |