Resume
O Que É close() ?
A função close() é uma chamada do sistema que libera recursos associados a um descritor de arquivo específico [1].
Sintaxe
int close(int fildes);O parâmetro fildes é o número do descritor de arquivo a ser fechado [1].
Funcionamento
- Quando você chama
close(), ela libera o descritor de arquivo especificado [1]. - Isso significa que o descritor de arquivo não existe mais como referência ao arquivo após a chamada bem-sucedida de
close()[1]. - Todas as operações de saída pendentes em memória são gravadas no disco antes de fechar o arquivo [2].
- As estruturas de controle internas do sistema operacional são liberadas [2].
Pontos Importantes
- É recomendável usar
fclose()em vez declose()quando trabalhar com arquivos abertos usandofopen()[1]. - Ao fechar todos os descritores associados a um arquivo, o espaço ocupado pelo arquivo é liberado se o link count for zero [1].
- Em sockets,
close()causa a destruição do socket [1].
Exemplo De Uso
#include <unistd.h>
int fd = open("example.txt", O_RDONLY);
if (fd != -1) {
// Uso do descritor de arquivo...
close(fd); // Fechando o descritor de arquivo
}Considerações Finais
- É crucial fechar os descritores de arquivo quando eles não forem mais necessários para evitar vazamentos de recursos.
- Tentar operar um descritor de arquivo fechado resulta em comportamento indefinido [5].
- Em programas que terminam normalmente, os descritores de arquivo são fechados automaticamente pelo sistema operacional [2].
References and Footnotes
[1] https://pubs.opengroup.org/onlinepubs/009604499/functions/close.html
[2] https://www.br-c.org/doku.php?id=close
[3] https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html
[4] https://linux.die.net/man/2/close
[5] https://www.geeksforgeeks.org/fclose-function-in-c/
[6] https://www.tutorialspoint.com/c_standard_library/c_function_fclose.htm
[7] https://man7.org/linux/man-pages/man2/close.2.html
[8] https://stackoverflow.com/questions/70801534/close-file-in-c
[9] https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/posix-close?view=msvc-170