descritores de arquivos e / dev / fd

7

Os descritores de arquivos são exclusivos em todo o processo ou em todo o sistema. Porque cada arquivo parece usar o mesmo descritor para stdin e stdout. Existe algo especial com isso? Como o stdin e o stdout funcionam? Eu percebo que o dev/fd , é um link para proc/self/fd , mas como todos eles têm o mesmo número?

Edit: Mesmo depois de olhar para outros processos, a maioria dos descritores de arquivos são aproximadamente os mesmos números.

    
por rubixibuc 15.12.2011 / 22:47

1 resposta

6

Várias coisas podem estar confusas aqui.

Filedescriptors são anexados a um arquivo (no sentido geral) e são específicos de um determinado processo. Filedescriptors são eles próprios referenciados através de ids numéricos pelo seu processo associado, mas um descritor de arquivo pode ter vários ids. Exemplo: ids 1 e 2, que são chamados de saída padrão e erro padrão, geralmente se referem ao mesmo descritor de arquivo.

Os links simbólicos /proc/pid/fd/x fornecem apenas uma sugestão para o que o filedescriptor x do processo pid está vinculado. Se é um arquivo regular, o link simbólico dá o seu caminho. Mas se o filodescriptor for, e. um socket inet, então o symlink está apenas quebrado. No caso de um arquivo regular (ou algo que tenha um caminho como um tty), é possível abri-lo, mas você obteria um filedescriptor diferente para o mesmo objeto.

    
por 16.12.2011 / 01:22

Tags