DICCIONARIO DE INFORMÁTICA Y TECNOLOGÍA
  ¿Qué significa estado de salida? - Información sobre estado de salida

Definición de estado de salida (código de retorno, exit status o return code)

Leandro Alegsa (Contacto) 2018-06-25

Envíanos un mensaje


Enviar
Anuncios

El estado de salida es el número devuelto por un proceso informático hijo a su padre cuando finaliza. Su propósito es indicar que el software funcionó correctamente o que falló de alguna manera.

El valor de un estado de salida es un entero. Usualmente, el valor 0 indica que el proceso de salida fue exitoso, y 1 (o más) indica que falló.

También conocido como: código de salida, código de resultado, estado de salida, código de retorno, exit code, exit status o return code. En Microsoft Windows y MS-DOS, el estado de salida se llama errorlevel.


Funcionamiento del estado de salida

El estado de salida de un proceso en la programación de la computadora es un pequeño número que pasa de un proceso secundario (el llamado) a un proceso principal (el llamador) cuando termina de ejecutar un procedimiento específico o una tarea delegada.

Cuando se ejecutan programas de computadora, el sistema operativo crea una entidad abstracta llamada proceso en la que se mantiene la contabilidad para ese programa.

En sistemas operativos multitarea, como Unix o Linux, los procesos activos pueden crear nuevos procesos. El proceso que engendra a otro se llama proceso principal (padre), mientras que los creados son procesos secundarios (hijos).

Los procesos secundarios se ejecutan simultáneamente con el proceso principal. La técnica de engendrar procesos secundarios se usa para delegar un trabajo en un proceso secundario cuando no hay motivo para detener la ejecución del elemento principal.

Cuando el hijo termina de ejecutarse, sale llamando a la llamada del sistema de salida. Esta llamada al sistema facilita pasar el código de estado de salida al padre, que puede recuperar este valor utilizando la llamada al sistema de espera.


Estado de salida en Windows

Windows usa enteros sin signo de 32 bits como estados o códigos de salida, aunque el intérprete de comandos los trata como firmados. Si un proceso falla la inicialización, se puede devolver un código de error del sistema de Windows.

Los códigos de salida se referencian directamente, por ejemplo, por el intérprete de línea de comandos CMD.exe en la terminología de nivel de error heredada de DOS. Los procesos de .NET Framework y Windows PowerShell se refieren a él como la propiedad ExitCode del objeto Process.


Estado de salida en Java

En Java, cualquier método puede llamar a System.exit (int status), a menos que un administrador de seguridad no lo permita. Esto terminará la máquina virtual Java actualmente en ejecución. El argumento o parámetro sirve como un código de estado: por convención, un código de estado distinto de cero indica una terminación anormal.


Estado de salida en DOS

En la terminología de DOS, un errorlevel es un código de salida entero devuelto por un programa ejecutable o una subrutina. Los niveles de error suelen oscilar entre 0 y 255. En DOS solo hay 256 códigos de error disponibles.

Los estados de salida a menudo son capturados por programas por lotes.


Estado de salida en lenguaje C

El lenguaje de programación C permite que los programas que salen o vuelven de la función principal señalen el éxito o el fracaso devolviendo un número entero o devolviendo las macros EXIT_SUCCESS y EXIT_FAILURE.

En los sistemas tipo Unix, estos son iguales a 0 y 1 respectivamente. Un programa C también puede usar la función exit() que especifica el estado entero o la macro de salida como primer parámetro.

Además de las macros EXIT_SUCCESS y EXIT_FAILURE, el estándar C no define el significado de los códigos de retorno. Las reglas para el uso de códigos de retorno varían en diferentes plataformas.


Estado de salida en Shell y scripts

El estado de salida de un comando de shell ejecutado es el valor devuelto por la llamada al sistema waitid o la función equivalente. El código de salida completo de 32 bits solo está disponible con la llamada a waitid, pero no con las interfaces de espera anteriores. Con interfaces de espera más antiguas, el código de salida visible solo contiene los 8 bits bajos del código de salida.

Los scripts de Shell generalmente ejecutan comandos y capturan 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 falla. Este esquema aparentemente contra-intuitivo se usa por lo que hay una forma bien definida de indicar el éxito y una variedad de formas de indicar varios modos de falla. Cuando un comando termina con una señal cuyo número es N, un intérprete de comandos establece la variable $? a un valor mayor que 128. La mayoría de los shells usan 128 + N, mientras que ksh93 usa 256 + N.

Si no se encuentra un comando, el shell debería devolver un estado de 127. Si se encuentra un comando pero no es ejecutable, el estado de retorno debería ser 126. 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.


Estado de salida en POSIX

En Unix y otros sistemas compatibles con POSIX, las llamadas al sistema waitpid() y la antigua wait() establecen un valor de estado de tipo int empaquetado como un campo de bits con varios tipos de información de terminación de hijo. Si el hijo finalizó al salir (según lo determinado por la macro WIFEXITED, la alternativa habitual es que murió a causa de una señal no detectada), SUS especifica que los 8 bits de bajo orden del estado de salida se pueden recuperar del valor de estado utilizando el WEXITSTATUS macro en espera.h; cuando se usa la llamada al sistema POSIX waitid() (agregado con SUSv1), el rango del estado ya no está limitado y puede estar en el rango entero de 32 bits. En la llamada al sistema waitid(), el estado de salida hijo y otra información ya no se encuentran en un campo de bits, sino en la estructura siginfo_t, las macros W* ya no se aplican.

Los sistemas compatibles con POSIX generalmente usan una convención de cero para el éxito y no cero para el error.

Existen algunas convenciones en cuanto a los significados relativos de varios códigos de error; por ejemplo, GNU recomienda que los códigos con el conjunto de bits alto se reserven para errores graves, en tanto FreeBSD ha documentado un amplio conjunto de interpretaciones preferidas. Los significados para 15 códigos de estado 64 a 78 se definen en sysexits.h. Históricamente, derivan de sendmail y otros agentes de transferencia de mensajes, pero desde entonces han encontrado uso en muchos otros programas.





¿Mejoramos la definición?
Puntos: 0 (0 votos)







Respondemos tus consultas o comentarios a continuación:


¿Dudas? ¿necesita más información? Escriba y responderemos a tu email: clic aquí



 




  Diccionario de informática
  Búsqueda por letras:

A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z - 0,9
 
Búsqueda por categorías
:

Almacenamiento - Aplicaciones - Audio - Compresión - Desarrollo web - Discos ópticos - Inteligencia Artificial - Memorias - Microprocesadores - Seguridad informática - Sistemas de archivos - Terminología de programación - UNIX - Windows - ver categorías

 
Búsqueda por palabras:






Preguntas

No hay ningún comentario todavía

Todos los derechos reservados © 1998 - 2018 - ALEGSA - Santa Fe, Argentina.
Políticas del sitio web - Contacto - Publicidad