Los flujos de entrada y salida estándar en sistemas como UNIX (y algunos otros) son subprocesos de proceso que tienen un número (manejador) reservado para realizar algunas funciones "estándar". Por lo general (aunque no necesariamente), estos identificadores ya están abiertos en el momento en que se inicia la tarea ( el ejecutable ).
El flujo número 0 (stdin) está reservado para leer comandos o entradas del usuario .
Cuando se ejecuta el programa de forma interactiva, por defecto está destinado a leer desde un dispositivo de interfaz de usuario de texto ( teclado ). El shell de UNIX (y los shells de otros sistemas) le permite cambiar el destino de este flujo usando el <carácter " ". Los programas del sistema ( daemons , etc.) generalmente no usan este hilo.
El flujo número 1 (stdout) está reservado para la salida, generalmente (aunque no necesariamente) texto .
Cuando se ejecuta el programa de forma interactiva, por defecto tiene como objetivo escribir en el dispositivo de visualización ( monitor ). El shell de UNIX (y los shells de otros sistemas) le permite redirigir este flujo utilizando el >carácter " ". Las herramientas para ejecutar programas en segundo plano (como nohup ) suelen redirigir este flujo a un archivo .
El flujo número 2 (stderr) está reservado para mostrar mensajes de diagnóstico y depuración en forma de texto.
La mayoría de las veces, el propósito de este flujo es el mismo que el de stdout, sin embargo, a diferencia de este, el propósito del flujo stderr no cambia cuando se “ >” y se crean canalizaciones (“ |”). Es decir, los mensajes de depuración del proceso cuya salida se redirige seguirán llegando al usuario. El shell de UNIX le permite cambiar el destino de este flujo utilizando la 2>construcción " ". Por ejemplo, para suprimir la salida de este flujo, no es raro escribir "2> /dev/null ".
La función de manejo de errores POSIX perror se usa en los lenguajes de programación C y C++ para imprimir un mensaje de error en stderr basado en el último número de error almacenado en errno .
En DOS , también podrían usarse los números 4 (stdprn) y 5 (stdaux) [1] .