怎么做网站推广佳木斯,企业顺德网站建设,wordpress搜索标签页,wordpress上传图片错误共识原理: 1.文件 内容 属性
2.文件分为打开的文件 和 没打开的文件
3.打开的文件: 谁打开? 进程! ----本质是研究进程和文件的关系! 根据冯诺依曼原理#xff0c;文件被打开#xff0c;必须先被加载到内存#xff01;不然CPU怎么访问它 那么是文件内容被加载#xff…共识原理: 1.文件 内容 属性
2.文件分为打开的文件 和 没打开的文件
3.打开的文件: 谁打开? 进程! ----本质是研究进程和文件的关系! 根据冯诺依曼原理文件被打开必须先被加载到内存不然CPU怎么访问它 那么是文件内容被加载还是属性被加载还是都被加载 一定要先把属性加载到内存内容要不要被加载取决于要不要对文件做修改理想情况是都被加载
一个进程可以打开多个文件则进程与打开文件数量关系为 进程打开的文件 1 n 则操作系统内部一定存在大量的被打开的文件! ------0S要不要管理这些被打开的文件呢? ----怎么管理—先描述在组织 — 在内核中一个被打开的文件都必须有自己的文件打开对象包含文件的很多属性。struct XXX{文件属性; struct XXX*next}; 用双链表组织起来
4.没打开的文件:∶在哪里放着呢? 在磁盘上。我们最关注什么问题?没有被打开的文件非常多。文件如何被分门别类的放置好…我们要快速的进行增删查改…快速找到文件 如何存储
本文目标主要先研究被打开的文件
1、以C语言为主先回忆一下C文件接口 打开文件的路径和文件名默认在当前路径下新建一个文件,fopen中当前路径是什么 当前路径进程的当前路径cwd —如果我更改了当前进程的cwdchdir就可以把文件新建到其他目录 ls /proc/进程ID 可以查看进程task_stuct的绝大多数属性cwp就是进程环境变量pwd改了个名字来的 下面用fwrite进行写入一段字符串 更改字符串由hello linux - abcd 发现并不是abcdo linux 而是只有abcd
w方式打开的特性 如果以w方式打开如果文件不存在会创建一个 w 写入之前会对文件进行清空处理并且从文件开始写入
观察输出重定向盲猜一波它本质一定是打开这个文件并且是w模式打开的因为他会先清空 问题对文件进行写入字符串时要不要把\0也加上 答字符串以\0结尾是你C语言的规定和我文件有什么关系? ??
a 方式打开 追加写 则 和 一定是打开方式的区别 w / a
C程序默认再启动的时候帮我们打开三个流标准输入stdin标准输出stdout标准错误stderr 这三个输入输出流就是文件
在C语言看来 向显示器写入和向文件写入没有区别 因为Linux下一切皆文件所以我们可以不用printf直接用文件fprintf等接口直接向显示器写入 那么问题来了 1、如何理解 Linux一切皆文件? 2、三个标准流为什么所有语言都要支持它到底是什么怎么做到的
2、过渡到系统认识文件系统调用 文件在磁盘上磁盘是外部设备访问文件其实是在访问硬件 根据计算机体系层状结构和操作系统不相信任何用户则C语言访问文件的库函数一定封装了文件系统调用接口利用系统调用贯穿操作系统访问硬件 认识几个文件系统调用 1、open 对于flags是标志位代表只写/追加/没有创建新文件/清空… 我们要是自己写可能在形参直接干上2~3以上标志位但其实一个整形本来就有32位可以利用一个Bit位代表一个状态 我们可以用一种优雅的方式来完成这个工作。做到只传一个int flags来完成标记 手册中看到O_RDONLY,O_WRONLY这一看就是个宏只有一个bit位是1代表不同的状态 比特位级别的标志位传递方式 falgs提供了很多宏只有一个Bit位为1他可以传递多种标志位做按位或的组合在函数内部再一与就可以调用不同的功能函数 再回到open上来 1、O_WRONLY不会创建文件如果文件不存在就打开失败open返回值为-1则需要或上O_CREAT
2、即使标志位为O_WRONLY|O_CREAT 新建文件权限为随机值所以创建文件必须告诉Open第三个形参权限 0666为八进制rw- rw- rw- 可结果是664 那么是因为掩码的存在 umask默认002 也是八进制 可以通过更改umask的方式来就让文件权限是666 系统调用umask
3、访问文件的本质
4、重定向 缓冲区