Descritores de arquivos de E/S padrão

Descritores de arquivos de E/S padrão

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/fdseria para o lsprocesso 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 PPidqual 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:

  1. Na janela 1, entre echo $$para obter o PID desse shell.
  2. Na janela 2 digacat /proc/[pid]/fd/1
  3. Na janela 1 comece a digitar e observe o que acontece na janela 2.

informação relacionada