当前位置: 技术问答>linux和unix
把一个文件打开了就一直不关闭,直到进程退出
来源: 互联网 发布时间:2016-08-04
本文导语: 请问,这样做有什么坏处吗? | 一个进程允许打开的最多文件数是有限制的 如果你要打开很多文件就可能有的文件打不开 fd相关数据结构是由内核维护的,你不关闭,那些数据结构就会占用...
请问,这样做有什么坏处吗?
|
一个进程允许打开的最多文件数是有限制的
如果你要打开很多文件就可能有的文件打不开
fd相关数据结构是由内核维护的,你不关闭,那些数据结构就会占用内存
如果你要打开很多文件就可能有的文件打不开
fd相关数据结构是由内核维护的,你不关闭,那些数据结构就会占用内存
|
另外linux似乎还有页缓存机制,可以提供把一个文件部分缓存在内存中,减少读取硬盘时间
为了快速检索你要读写的部分是否在页缓存中,维护了一个基树
如果打开的是一个大文件,对应的内存消耗就不能忽略
如果 数据吞吐要求大的情况,这点消耗也是需要注意的
为了快速检索你要读写的部分是否在页缓存中,维护了一个基树
如果打开的是一个大文件,对应的内存消耗就不能忽略
如果 数据吞吐要求大的情况,这点消耗也是需要注意的
|
如果打开的是设备文件
不用了不及时关闭可能导致别的程序无法使用这个硬件设备
差不多了,就这些
不用了不及时关闭可能导致别的程序无法使用这个硬件设备
差不多了,就这些
|
不关闭的话,可能写入数据还在缓冲区,不知道是否会有数据丢失。
此外,会一直占用该进程下一个文件描述符,导致不必要的消耗。
此外,会一直占用该进程下一个文件描述符,导致不必要的消耗。
|
fclose()用来关闭先前fopen()打开的文件。
此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源
此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源
|
没有大的坏处吧!!!
|
如果程序里面不是动态的会持续打开很多的文件,那么没有坏处。
|
打开文件不关闭对于进程的功能实现来说,没有问题。
但是这不是正确的做法,会浪费很多资源。
但是这不是正确的做法,会浪费很多资源。