打开文件操作的实质是什么解决办法

打开文件操作的实质是什么
打开文件的过程到底是经历了一个怎样的过程,为什么一定要关闭他?不关闭的时候,可以被其他的程序修改吗?

------解决方案--------------------
从api的角度是各个层次的api进行了调用;
从操作系统的角度,是用户层(也可能不是用户层)依此到内核层之间进行了信息传递,是打开文件的操作;
从数据的角度,用户层和内核层都可能会分配相应内存来保存文件的必要信息;


打开需要关闭是因为打开可能申请了资源,包括内存、句柄等,释放才能让其它可能要使用的程序能正常打开和使用;


如果不关闭,理论上是可以让其它程序使用的;
------解决方案--------------------
实质是给操作系统一个消息,让它在你的程序和要打开的文件间建立联系。这些联系是要消耗系统资源的,如果你不及时关掉文件,那这些资源就一直被占用着。

不过大多数操作系统会在应用程序关闭后关掉被它打开的所有文件,所以你要是退出程序了也就关光了。

------解决方案--------------------
不关闭时是否能被其它程序改写就要看你使用什么方式打开的了。如果用独占方式打开,在被关闭之前别的程序不能改写它。
------解决方案--------------------
打开文件的实质是获取内存地址,然后进行内存的读写操作。

怎么确定内存地址,这个系统有文件系统,已经封装好API。

打开文件的时候会调用文件系统,系统资源会分配部分内存用于存放文件系统的结构体,当不关闭的时候,这个系统资源就不会回收,就会内存泄露。

系统对内存分配的时候会辨识是否被使用,当没有释放的内存就一直被使用中,无法被获取到该内存的首地址。当你一直保存该首地址的时候,就可以修改对应的内存内容。
------解决方案--------------------
探讨

打开文件的实质是获取内存地址,然后进行内存的读写操作。

怎么确定内存地址,这个系统有文件系统,已经封装好API。

打开文件的时候会调用文件系统,系统资源会分配部分内存用于存放文件系统的结构体,当不关闭的时候,这个系统资源就不会回收,就会内存泄露。

系统对内存分配的时候会辨识是否被使用,当没有释放的内存就一直被使用中,无法被获取到该内存的首地址。当你一直保存该首地址的时候,就可以……

------解决方案--------------------
打开文件类似把你抓起来。
这要看你被抓起来的严重程度,和你被探视的人的权限决定你是否可以被探视。

如果,你不关闭文件的话,那就是类似无期徒刑,很可怕。除非关你的地方被摧毁了。

CreateFile 的是否允许设置的权限及打开方式,是否共享等等。
其他人在 CreateFile 的设置。

------解决方案--------------------
你要存取文件,就要定位文件的目录项,你提供的是文件名,根据文件名搜索目录项是很花时间的
如果每次read都提供文件名则很没效率,打开文件就只搜一次目录项并把相关信息放进内存
后面读时就不需要再次搜索
------解决方案--------------------
探讨
是不是只有关闭了文件才能够将预写入文件中的已存在于内存中的内容存储到文件中?

------解决方案--------------------
我最近写一个系统监视器,从/proc文件读取数据,得到系统信息,因为数据要不断更新,所以要不断打开文件。调试中发现一个Bug,程序一段时间后自动关闭!why?
仔细检查,正是因为打开文件米有关闭……
据我所知,linux系统最多运行一个程序打开60多个文件。
------解决方案--------------------
可以多个程序同时打开文件的,这个放心