GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué tan portátiles son /dev/stdin, /dev/stdout y /dev/stderr?

Ocasionalmente, necesito especificar un "equivalente de ruta" de uno de los flujos de IO estándar (stdin , stdout , stderr ). Dado que el 99 % del tiempo trabajo con Linux, solo antepongo /dev/ para obtener /dev/stdin , etc., y esto “parece hacer lo correcto”. Pero, por un lado, siempre me ha preocupado ese razonamiento (porque, por supuesto, "parece funcionar" hasta que deja de funcionar). Además, no tengo buen sentido de cuán portátil es esta maniobra.

Así que tengo algunas preguntas:

  1. En el contexto de Linux, ¿es seguro (sí/no) equiparar stdin ,
    stdout y stderr con /dev/stdin , /dev/stdout y
    /dev/stderr ?

  2. En términos más generales, ¿es esta equivalencia “adecuadamente portátil “?

No pude encontrar ninguna referencia POSIX.

Respuesta aceptada:

Ha estado disponible en Linux desde su prehistoria.
no POSIX, aunque muchos shells reales (incluido AT&T ksh y bash ) lo simulará si no está presente en el sistema operativo; tenga en cuenta que esta simulación solo funciona a nivel de shell (es decir, redirección o parámetro de línea de comando, no como argumento explícito para, por ejemplo, open() ).
Dicho esto, debería estar disponible en la mayoría sistemas Unix comerciales, de una forma u otra (a veces se escribe /dev/fd/N para varios enteros N , pero la mayoría de los sistemas con eso proporcionarán enlaces simbólicos como lo hacen Linux y *BSD).


Linux
  1. Cómo reemplazar un disco duro fallido en el software RAID de Linux

  2. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  3. Linux:¿Diferencia entre /dev/console, /dev/tty y /dev/tty0?

  4. ¿Cómo se intercambia /dev/sda con /dev/sdb?

  5. ¿Cómo puedo cambiar la cantidad y el tamaño de los ramdisks de Linux (/dev/ram0 - /dev/ram15)?

tty (/dev/tty) vs pts (/dev/pts) en Linux

¿Cómo codificar en base64 /dev/random o /dev/urandom?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

Cómo usa Linux /dev/tty y /dev/tty0

hacer eco o imprimir /dev/stdin /dev/stdout /dev/stderr

¿Por qué se requieren < o > para usar /dev/tcp?