O descritor de arquivo deve ser fechado uma vez usado?

2

Estou fazendo um projeto. Mas eu encontrei no código-fonte há tantos descritores de arquivos não divulgado. À primeira vista, pensei que isso não é bom. Depois que eu pesquisei, alguém diz: se houver algum buffer atrás deste fd, não o feche ou algo ruim acontecerá. Eu não tenho certeza sobre isso. Então, alguns podem dar algum conselho?

O descritor de arquivo deve ser fechado uma vez usado? Existem regras sobre o uso do descritor de arquivos?

    
por MichaelWang 21.12.2015 / 07:17

1 resposta

2

Sim, é uma boa ideia fechar os descritores de arquivos assim que você não precisar mais deles, apenas para liberar os recursos associados e evitar atingir limites.

Agora, alguns descritores de arquivos podem estar abertos por meio de algumas APIs, e você deve usar essa mesma API para fechá-las (não usar a chamada de sistema close(2) ).

Uma API típica é stdio em C (todos os fopen , printf , fputs ...). Por exemplo, se um arquivo foi aberto com fopen(3) (que retorna um tipo de dados FILE* , não um descritor de arquivo, mas terá criado um fd abaixo), você deverá fechar se com fclose(thatFILE) (que irá liberar todos os buffers), não close(fileno(thatFILE)) , o que fecharia o fd sob os pés do estúdio.

    
por 21.12.2015 / 16:27