En el ámbito de la computación, el estado de salida (también conocido como exit code o exit value) es un número entero que un proceso terminado pone a disposición de su proceso padre o del llamador. En sistemas operativos como DOS, este concepto se conoce comúnmente como errorlevel.
Funcionamiento de los Procesos
Cuando se ejecutan programas, el sistema operativo crea una entidad abstracta llamada proceso. En sistemas operativos multitarea como Unix o Linux, los procesos activos pueden crear nuevos procesos, denominados procesos hijos, mientras que el proceso que los genera se llama proceso padre.
Los procesos hijos se ejecutan de forma concurrente con el padre. Esta técnica de generación de procesos se utiliza para delegar tareas específicas sin detener la ejecución del proceso principal. Cuando el proceso hijo finaliza su ejecución, utiliza la llamada al sistema exit para devolver el estado de salida al padre, quien puede recuperar este valor mediante la llamada al sistema wait.
Semántica y Significados
El significado de los estados de salida es un acuerdo entre el proceso padre y el hijo. Por convención general en la programación, un valor de cero (0) indica que el proceso terminó con éxito, mientras que cualquier valor distinto de cero indica un fallo o una condición específica.
Variaciones según el Sistema y Lenguaje
- Shell y Scripts: En los scripts de shell, un estado de salida cero significa éxito. Si un comando no se encuentra, suele devolverse el estado 127; si se encuentra pero no es ejecutable, se devuelve el 126.
- C y C++: Estos lenguajes permiten señalar el éxito o fallo mediante la devolución de un entero desde la función
maino usando las macrosEXIT_SUCCESS(0) yEXIT_FAILURE(1) en sistemas tipo Unix. - C#: El método
Main()puede declarar un tipo de retornointpara enviar un código de salida al sistema operativo. - Java: Dado que el método
main()no devuelve un valor, se utilizaSystem.exit()para terminar el programa y la máquina virtual de Java (JVM) con un código específico. - DOS: Utiliza el concepto de errorlevel, generalmente en un rango de 0 a 255, capturado a menudo mediante comandos
IF ERRORLEVELen archivos batch. - OpenVMS: A diferencia de la mayoría, utiliza valores impares para indicar éxito y valores pares para indicar fallo.

