FDs mais de 2, mais que (stdin / stdout / sterr)

0

Acho que este post não está fora do tópico.Tinha três descritores de arquivo tradicionais em contextos Unix:

0 == STDIN
1 == STDOUT
2 == STDERR

Mas em novos artigos, blogs, posts, respostas, etc., eu leio mais do que os FDs acima, por exemplo: descubra quais descritores de arquivo compartilham a mesma" descrição de arquivo aberto "
Por que usando um loop de shell para processar texto considerado uma má prática?
Redirecionamento de E / S
Usando o exec
Descritores de arquivos & script de shell
Gilles respondeu no último link, mas depois de alguns googling eu não encontrei uma referência sobre o dado FDs. Além disso, quando eu uso o seguinte hack:

root@debian:/home/mohsen# ls /dev/fd/
0  1  2  3

Eu não assisto mais de 4, mas eu vi 4 5 ou 7 em alguns exemplos, eu tenho as três perguntas sérias a seguir:

  1. Qual é o /dev/fd/3 FD?
  2. Onde estão os outros?
  3. Você conhece uma referência relacionada sobre o restante deles?
por PersianGulf 20.05.2015 / 15:07

1 resposta

2

Toda vez que você abre um arquivo (ou qualquer coisa que possa abrir como um arquivo, como um socket), você obtém um descritor de arquivo, que é representado por um int. Os 3 primeiros são criados automaticamente para um processo como stdin, stdout e stderr. Quaisquer outros arquivos abertos obtêm outros descritores. Eu suspeito que isso apenas aumenta o número a cada vez, mas eu não sei se é um fenômeno confiável ou não. Então, 3 e 4 seriam os dois primeiros arquivos que foram abertos pelo processo. E 7 seria o quinto arquivo aberto.

    
por 20.05.2015 / 15:12