O que são esses arquivos no meu diretório / dev?

5

Eu sei que a maioria dos dispositivos é apresentada no diretório /dev , mas só agora eu notei dois nomes muito estranhos, mas familiares, lá ...

Estou falando de stdin@ e stdout@ lá em baixo:

Para que servem isso? Eles são usados por funções da linguagem C?

    
por jcora 02.09.2012 / 15:17

1 resposta

10

Esses arquivos são na verdade chamados stdin , stdout e stderr . O caractere @ é adicionado por ls para informar que eles são links simbólicos . ls -l revelaria que os destinos desses links simbólicos são /proc/self/fd/0 , /proc/self/fd/1 e /proc/self/fd/2 .

/proc é um sistema de arquivos virtual fornecido pelo kernel que mostra informações sobre o sistema operacional. Entre outras coisas, há diretórios como /proc/1234 que contêm informações sobre o processo com o ID 1234. /proc/self é um link simbólico para o diretório de qualquer processo que esteja acessando-o (o kernel retorna um destino diferente para diferentes processos). / p>

/proc/self/fd (que também é um link simbólico para /dev/fd ) contém uma entrada por arquivo que o processo abriu. Cada entrada corresponde a um descritor de arquivo e é um link simbólico para o arquivo (se possível - para pipes, soquetes e arquivos excluídos, o link simbólico fornece informações úteis para a depuração, mas não aponta para um arquivo que você pode reabrir pelo nome) . Esses descritores de arquivo são os mesmos que você manipula com funções C, como open , close , dup , read , write , etc. Eles não são usados pela C funções, são outras formas de interagir com os mesmos objetos.

O motivo /dev/stdin e amigos existem é que às vezes um programa requer um nome de arquivo, mas você quer dizer para ele usar um arquivo que já está aberto (um pipe, por exemplo). Então você pode passar /dev/stdin para dizer ao programa para ler sua entrada padrão.

Leitura adicional:

por Gilles 02.09.2012 / 15:40