open和fopen区别、虚拟内存
其实没必要水的,然而就是老记混open和fopen,于是顺便学学其他的
1 |
|
然后,fopen是标准c库函数,open是系统函数,使用open返回的是文件描述符,而是用fopen返回的则是文件指针
文件描述符和文件指针关系:
程序运行后变成进程,在内存的进程管理中,有个文件描述符表,每打开一个文件,就占用一个文件描述符(算了反正半懂不懂也是忘)
文件描述符才能找到文件在磁盘(即虚拟内存)中对应的位置
文件指针就是文件描述符和缓冲区(在物理内存上)的封装,数据先写到缓冲区,再写到磁盘
虚拟内存
电脑中所有运行的程序都需要内存来执行,如果执行的程序很大,会导致内存消耗殆尽。为了解决这个问题,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存(作为内存使用的一部分硬盘空间),虚拟内存在硬盘上的存在形式就是 C:\PAGEFILE.SYS
与虚拟内存相对应的就是物理内存,绝大部分程序8会直接访问物理内存(危险),物理内存一般由操作系统访问
fopen和open区别
所以综上所述就是,标准c库函数操控系统函数访问文件,标准c库函数无法直接读写文件
以及在读写时标准c库函数比系统函数多了个缓冲区的流程
卧槽我居然看懂了我好牛逼??
fopen、open参数
open():
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写打开
fopen():
r
w
a: 追加到一个文件(写入时在末尾写写入)
“r+” 打开一个用于更新的文件,可读取也可写入。该文件必须存在。
“w+” 创建一个用于读写的空文件。
“a+” 打开一个用于读取和追加的文件。
open和fopen区别、虚拟内存
https://bl4zygao.github.io/2021/12/29/open和fopen区别/