El estado de salida de un programa, también llamado código de retorno, es un número que un programa pasa al sistema operativo, script u otro proceso que lo ejecutó originalmente una vez que el programa ha terminado de ejecutarse. No existen reglas reales sobre lo que significan los números utilizados como estado de salida, aunque un valor de cero tradicionalmente significa que el programa salió normalmente, y cualquier valor distinto de cero significa que el programa terminó inesperadamente. Al asignar un número al estado de salida, el programa o proceso original que llamó al código puede indicar si el programa realizó correctamente las tareas necesarias o si se deben realizar otras acciones.
Casi todos los lenguajes informáticos y muchos lenguajes de secuencias de comandos tienen algún mecanismo o función que puede devolver un estado de salida. Hay situaciones en las que un programa puede terminar intencionalmente en medio de la ejecución, usando un código de error específico para indicar que algo anda mal, como un archivo de datos faltante o falta de memoria en la computadora. Los programas que no definen explícitamente un código de estado de salida devolverán un cero al programa que realiza la llamada a menos que el sistema operativo o el intérprete de idioma finalicen el programa debido a errores.
El estado de salida también se puede utilizar para comunicarse con un script u otro proceso devolviendo valores específicos que indican qué acción se debe tomar a continuación. Un ejemplo sería un script diseñado para mantener un programa en ejecución a pesar de los posibles momentos en los que el programa podría salir por mantenimiento. Este esquema funcionaría con el script ejecutando el programa y luego esperando a que salga. Los programadores podrían organizarlo de modo que el programa devuelva un número para indicar que está saliendo permanentemente y no debe reiniciarse, y otro número podría indicarle al script que espere un período de tiempo y luego reinicie el programa; Aún así, un tercer valor podría indicar que el programa encontró un error y necesita la atención de un programador.
El uso de un código de estado de salida para las comunicaciones es conveniente en ciertas situaciones debido a la seguridad y otras limitaciones que tienen algunos programas en diferentes sistemas operativos. Hay muchos casos en los que es imposible que un programa se comunique con su proceso de llamada o con otro programa que se ejecuta en paralelo en el mismo sistema. En estas situaciones, las opciones para las comunicaciones entre programas se limitarían a esquemas complejos que involucren memoria compartida, conexiones de socket de red o escritura de archivos. Al usar un estado de salida, se puede pasar información simple de una manera muy básica que no requiere el desarrollo de un marco personalizado.