![Descriptores de archivos de E/S estándar](https://rvso.com/image/31674/Descriptores%20de%20archivos%20de%20E%2FS%20est%C3%A1ndar.png)
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/fd
sería para el ls
proceso 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 PPid
cuá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:
- En la ventana 1 ingrese
echo $$
para obtener el PID de ese shell. - En la ventana 2 diga
cat /proc/[pid]/fd/1
- En la ventana 1 comience a escribir y observe lo que sucede en la ventana 2.
- /procesoen kernel.org
- procesoen TLDP
- Sistemas de archivosen man7.org