Descriptores de archivos de E/S estándar

Descriptores de archivos de E/S estándar

codifico esto

$ ls -l 1> stdout.txt

y obtengo el resultado deseado,

1> stdout.txt

redirige la salida de la salida estándar al archivo stdout.txt.

No veo ningún archivo de este tipo en el disco. ¿Qué tipo de sistema de archivos admite dichos archivos?ramfs?

¿Tiene esto alguna similitud con elprocsysistemas?

Respuesta1

Si estás en Linux y leí tu pregunta correctamente, sí, mira en/proc.

Para un proceso específico busque en /proc/[pid]/fd, por ejemplols -l /proc/123/fd/

También hay una forma especial de llegar a los fd del proceso actual mediante: /proc/self/fd.

Tenga en cuenta que, por ejemplo, ls -l /proc/self/fdsería para el lsproceso y no para su shell actual, que puede ver mediante:

cat /proc/self/cmdline | tr '\000' '\n'

o

cat /proc/self/status

Para el último vistazo, especialmente PPidcuál debería ser el PID de su shell.

Name:   cat
State:  R (running)
Tgid:   12696
Pid:    12696
PPid:   312

Como experimento, podrías intentar abrir dos ventanas de terminal:

  1. En la ventana 1 ingrese echo $$para obtener el PID de ese shell.
  2. En la ventana 2 digacat /proc/[pid]/fd/1
  3. En la ventana 1 comience a escribir y observe lo que sucede en la ventana 2.

información relacionada