Qual é o descritor de arquivo 3 atribuído por padrão?


19
$ ls -og /proc/self /proc/self/fd
lrwxrwxrwx 1 64 Jun 18 11:12 /proc/self -> 32157

/proc/self/fd:
total 0
lrwx------ 1 64 Jun 22  2012 0 -> /dev/tty1
lrwx------ 1 64 Jun 22  2012 1 -> /dev/tty1
lrwx------ 1 64 Jun 22  2012 2 -> /dev/tty1
lr-x------ 1 64 Jun 22  2012 3 -> /proc/32157/fd

Qual é o descritor de arquivo 3 atribuído por padrão?

Respostas:


34

Nada: existem três descrições de arquivo padrão, STDIN, STDOUT e STDERR. Eles são atribuídos a 0, 1 e 2, respectivamente.

O que você está vendo lá é um artefato da maneira como ls(1)funciona: para ler o conteúdo do /proc/self/fddiretório e exibi-lo, ele precisa abrir esse diretório.

Isso significa que ele recebe um identificador de arquivo, normalmente o primeiro disponível ... assim, 3.

Se você fosse executar, digamos, catem um console separado e inspecioná /proc/${pid}/fd-lo, descobriria que apenas os três primeiros foram atribuídos.


Ah, isso explica o resultado, incluindo o fato de que também 3aponta /proc/32157/fd. (Por que eu perdi isso?) Obrigado!
Musiphil 23/06/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.