![Descritores de arquivos de E/S padrão](https://rvso.com/image/31674/Descritores%20de%20arquivos%20de%20E%2FS%20padr%C3%A3o.png)
Eu codifico isso
$ ls -l 1> stdout.txt
e obtenho a saída conforme desejado,
1> stdout.txt
redireciona a saída da saída padrão para o arquivo stdout.txt.
Não vejo nenhum arquivo desse tipo existente no disco. Que tipo de sistema de arquivos suporta esses arquivos, éRamfs?
Isso tem alguma semelhança com oprocfesysfs?
Responder1
Se você estiver no Linux e eu li sua pergunta corretamente, sim, olhe em/proc
.
Para um processo específico, procure em /proc/[pid]/fd
, por exemplols -l /proc/123/fd/
Há também uma maneira especial de alcançar os fds do processo atual: /proc/self/fd
.
Observe que, por exemplo, ls -l /proc/self/fd
seria para o ls
processo e não para o seu shell atual, que você pode ver:
cat /proc/self/cmdline | tr '\000' '\n'
ou
cat /proc/self/status
Para uma última olhada, especialmente PPid
qual deve ser o PID do seu shell.
Name: cat
State: R (running)
Tgid: 12696
Pid: 12696
PPid: 312
Como experiência, você poderia tentar abrir duas janelas de terminal:
- Na janela 1, entre
echo $$
para obter o PID desse shell. - Na janela 2 diga
cat /proc/[pid]/fd/1
- Na janela 1 comece a digitar e observe o que acontece na janela 2.
- /procem kernel.org
- processono TLDP
- Sistemas de arquivosem man7.org