Claro que um arquivo pode ser aberto ou não aberto.
No entanto, um descritor de arquivo, por definição, refere-se a um arquivo aberto (certo?). (Bem, exceto quando se refere a algo além de um arquivo, como um cachimbo ou o que você tiver. Mas ainda está aberto.)
Eu encontrei a frase "descritor de arquivo aberto" várias vezes. Acredito que isso seja redundante e que, de fato, não haja outro tipo de descritor de arquivo além de um descritor de arquivo aberto - mas gostaria de verificar isso.
Um descritor de arquivo está em algum outro estado além de "aberto"? (Quando está fechado, não deixa de existir?)
Um programa executa isso:
O descritor de arquivo de entrada padrão não mudou de valor, mas não está mais referenciando uma descrição de arquivo aberto. Está disponível para realocação. Tentativas subsequentes de usá-lo, digamos,
read()
resultarãoEBADF
porque, embora ainda seja um descritor de arquivo , não é um alocado que faz referência a uma descrição de arquivo aberto. É um descritor de arquivo ruim .Leitura adicional
close()
" . The Open Group Base Specifications Edição 7. IEEE 1003.1:2008. O Grupo Aberto. 2018.read()
" . The Open Group Base Specifications Edição 7. IEEE 1003.1:2008. O Grupo Aberto. 2018.Esta parece uma distinção muito fina, desculpe. Por favor, tente não presumir que qualquer outra pessoa conheça a mesma definição exata que você e certifique-se de que quaisquer ambiguidades possam ser resolvidas a partir do contexto. Posso escrever uma resposta que concorde com você e pareça discordar de outras respostas, citando o seguinte:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258
portanto, se não se referir a exatamente uma descrição de arquivo aberto , não pode ser um descritor de arquivo . Também
http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html