文件描述符一旦使用就应该关闭吗?

文件描述符一旦使用就应该关闭吗?

我正在做一个项目。但我在源代码中发现有很多文件描述符未关闭。乍一看,我觉得这不太好。我google了一下,有人说,如果这个fd后面有一些缓冲区,不要关闭它,否则会发生不好的事情。我对此不太确定。所以有人可以给一些建议吗?

文件描述符一旦使用就应该关闭吗?文件描述符的使用有什么规则吗?

答案1

是的,一旦不再需要文件描述符,最好立即关闭它们,以便释放相关资源并避免达到限制。

现在,某些文件描述符可能通过某些 API 打开,您应该使用相同的 API 来关闭它们(而不是使用系统close(2)调用)。

典型的此类 API 是 C 语言中的 stdio(所有fopen, printf, fputs...)。例如,如果打开一个文件fopen(3)(它返回一个FILE*数据类型,而不是文件描述符,但会在下面创建一个 fd),您将需要关闭 if with fclose(thatFILE)(这将刷新所有缓冲区),而不是close(fileno(thatFILE))关闭fd在stdio的脚下。

相关内容