Descritores de arquivo de E / S padrão

1

Eu codifico isso

$ ls -l 1> stdout.txt

e obtenho a saída como 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 no disco. Que tipo de sistema de arquivos suporta tais arquivos, é ramfs ?

Tem alguma semelhança com o procfs e o sysfs ?

    
por ArunMKumar 05.05.2013 / 18:58

1 resposta

2

Se você está no Linux, e eu li sua pergunta corretamente, veja em /proc .

Para um processo específico, procure em /proc/[pid]/fd , por ex. ls -l /proc/123/fd/

Há também uma maneira especial de acessar os fd do processo atual: /proc/self/fd .

Observe que, por exemplo ls -l /proc/self/fd seria para o processo ls e não para seu shell atual, que você pode ver por:

cat /proc/self/cmdline | tr '
cat /proc/self/status
0' '\n'

ou

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

Para a última olhada, especialmente em PPid , que deve ser o PID do seu shell.

cat /proc/self/cmdline | tr '
cat /proc/self/status
0' '\n'

Como experiência, você pode tentar abrir duas janelas de terminal:

  1. Na janela 1, insira echo $$ para obter o PID desse shell.
  2. Na janela 2, digamos cat /proc/[pid]/fd/1
  3. Na janela 1, comece a digitar e observe o que acontece na janela 2.
por 05.05.2013 / 20:44