网站加地图带着做计算机项目的网站

张小明 2026/1/11 12:33:54
网站加地图,带着做计算机项目的网站,网站建设安全规范,自己做网站新手入门目录理解⽂件狭义理解⼴义理解⽂件操作的归类认知系统⻆度linux内核中传递标记位的方法系统文件IO系统调用opencloseread内核中打开文件的组织形式进程操作文件的途径不同进程打开同一个文件的struct file问题文件描述符的分配规则重定向重定向的原理dupstdout和st…目录理解⽂件狭义理解⼴义理解⽂件操作的归类认知系统⻆度linux内核中传递标记位的方法系统文件IO系统调用opencloseread内核中打开文件的组织形式进程操作文件的途径不同进程打开同一个文件的struct file问题文件描述符的分配规则重定向重定向的原理dupstdout和stderr为什么分开一切皆文件缓冲区常见的缓冲区类型缓冲区的刷新时机缓冲区的核心作用标准I/O缓冲区与操作系统内核缓冲区的关系理解⽂件狭义理解• ⽂件在磁盘⾥• 磁盘是永久性存储介质因此⽂件在磁盘上的存储是永久性的• 磁盘是外设既是输出设备也是输⼊设备• 磁盘上的⽂件本质是对⽂件的所有操作都是对外设的输⼊和输出简称IO⼴义理解• Linux下⼀切皆⽂件键盘、显⽰器、⽹卡、磁盘……这些都是抽象化的过程⽂件操作的归类认知文件属性元数据内容• 对于0KB的空⽂件是占⽤磁盘空间的因为还有属性• ⽂件是⽂件属性元数据和⽂件内容的集合⽂件属性元数据内容• 所有的⽂件操作本质是⽂件内容操作和⽂件属性操作系统⻆度• 对⽂件的操作本质是进程对⽂件的操作• 磁盘的管理者是操作系统• ⽂件的读写本质不是通过C语⾔/C的库函数来操作的这些库函数只是为⽤⼾提供⽅便⽽是通过⽂件相关的系统调⽤接⼝来实现的linux内核中传递标记位的方法系统文件IOc/c操作文件的相关接口本质上底层都是封装了文件操作相关的系统调用。编程语言通过抽象层屏蔽不同操作系统的底层差异通过语言接口在不同系统映射对应的系统调用实现跨平台性使开发者无需关注系统调用接口。所以c/c中描述打开文件的类/结构体中一定封装了底层文件描述符fd,因为系统调用的接口只匹配fd系统调用open系统接口中使用open函数打开文件open函数的函数原型如下int open(const char *pathname, int flags, mode_t mode);第一个参数路径文件名不加路径直接在当前路径查找文件第二个参数标记位open第二个参数是指定打开方式通过位图的原理将多种打开方式用一个32位的整数表示。选项如下可以通过按位或|传入多个选项如下O_WRONLY | O_CREAT第三个参数权限传入八进制数表示如果创建新文件的初始权限。结合umask权限掩码可得到最终权限返回值open的返回值是文件描述符文件描述符表的下标失败返回-1close系统接口中使用close函数关闭文件close函数的函数原型如下int close(int fd);使用close函数时传入需要关闭文件的文件描述符即可若关闭文件成功则返回0若关闭文件失败则返回-1。read系统接口中使用read函数从文件读取信息read函数的函数原型如下ssize_t read(int fd, void *buf, size_t count);我们可以使用read函数从文件描述符为fd的文件读取count字节的数据到buf位置当中。如果数据读取成功实际读取数据的字节个数被返回。如果数据读取失败-1被返回。内核中打开文件的组织形式与进程描述符(struct task_struct)相似已打开文件都会有一个对应的文件描述struct file结构体记录文件的动态信息。进程操作文件的途径操作文件的本质是进程对文件的操作一个进程可能操作多个文件进程操作文件的途径进程描述符(task_struct)中存在一个文件描述符表struct files_struct文件描述符表中记录进程打开的文件的信息包括打开文件的进程描述结构体指针数组struct file *fd指向文件的进程描述由此管理进程打开的文件。文件描述struct file结构体记录文件的动态信息。文件描述符fd就是该数组的下标是最典型的 “句柄” —— 它本质上是操作系统分配给进程的、用于标识打开文件 / IO 资源的整数型句柄类比结合内存描述符理解不同进程打开同一个文件的struct file问题struct file中包含打开进程的一些信息文件位置指针等所以不同进程打开同一个文件有各自独立的struct file而struct file中的引用计数是对于单个进程或父子进程内文件描述符表中指向该struct file的个数。父子进程子进程通过继承父进程的文件描述符可以共享指向同一个struct file引用计数本质struct file 包含了大量进程特定的状态信息所以每个进程打开文件时需要独立的实例而 struct inode 才是真正共享的文件元数据。文件描述符的分配规则进程打开时会默认打开0、1、2对应标准输入流、标准输出流、标准错误流0对应键盘12对应显示器。而键盘和显示器都属于硬件属于硬件就意味着操作系统能够识别到当某一进程创建时操作系统就会根据键盘、显示器、显示器形成各自的struct file将这3个struct file连入文件双链表当中并将这3个struct file的地址分别填入fd_array数组下标为0、1、2的位置至此就默认打开了标准输入流、标准输出流和标准错误流。由此可以理解linux下一切资源皆抽象为文件自己打开的文件的描述符一般从下标3开始如果关闭012从关闭位置分配实现重定向本质是从最小但是没有被使用的fd_array数组下标开始进行分配的。重定向重定向的原理重定向的本质就是修改文件描述符下标对应的struct file*的内容。输出重定向将本应该输出到一个文件的数据重定向输出到另一个文件中。追加重定向和输出重定向相同但唯一区别是输出重定向是覆盖式输出数据而追加重定向是追加式输出数据。虽然都对应显示器但其中一个重定向不会影响另一个。分别对应传递open标志位参数的两个宏追加、覆盖输入重定向将本应该从一个文件读取数据现在重定向为从另一个文件读取数据。dup完成重定向我们只需进行fd_array数组当中元素的拷贝即可,系统调用dup可以实现重定向原型int dup2(int oldfd, int newfd);参数将第一个参数下标的指针拷贝到第二个参数下标的指针返回值成功返回newfd失败返回-1注意这里关闭一个fd不会关闭文件因为文件描述采用类似智能指针的引用计数stdout和stderr为什么分开主要原因是为了区分程序的正常输出和错误信息确保错误信息优先输出。一切皆文件“一切皆文件” 的本质是通过统一的抽象接口将复杂的系统资源转化为可通过文件操作逻辑管理的实体。统一抽象的文件接口与底层实现分开不同外设都有自己的功能实现但file提供统一的接口由此将所有资源用抽象的文件接口进行管理这便是一切皆文件之所以文件系统可以封装设备管理也就是抽象操作方法本质是因为外设无非也是资源无非也是I/O数据流动所以可以当作文件通过在file结构体中存储对应实现方法的指针与类似c虚函数表指针实现多态思想将接口抽象与实现解耦实现一切皆文件缓冲区缓冲区是内存空间的⼀部分。也就是说在内存空间中预留了⼀定的存储空间这些存储空间⽤来缓冲输⼊或输出的数据这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输⼊设备还是输出设备分为输⼊缓冲区和输出缓冲区。常见的缓冲区类型标准 I/O 缓冲区C 语言库层面由 stdio.h 提供如 printf、fwrite 使用的缓冲区在FILE中设置指针进行管理分为三种模式全缓冲缓冲区满时刷新如普通文件。行缓冲遇到 \n 或缓冲区满时刷新如终端 stdout。无缓冲数据立即输出如 stderr 错误流。FILE中的关键部分fd系统文件描述符、缓冲区相关指针内核缓冲区操作系统层面即使应用程序的缓冲区已刷新数据也不会直接写入物理设备而是先进入内核缓冲区由操作系统统一调度写入如 Linux 的页缓存。硬件缓冲区外设自带的缓冲区如磁盘的缓存、网卡的接收缓冲区进一步减少与内存的交互次数。缓冲区的刷新时机主动触发调用 fflush()标准 I/O、sync()内核缓冲等函数。条件满足缓冲区写满、行缓冲遇到 \n仅终端。被动触发进程正常退出、关闭文件fclose() 会自动刷新。缓冲区的核心作用平衡速度让快速设备如 CPU不用等待慢速设备如磁盘提高整体效率。减少开销批量处理 I/O 操作降低设备访问频率。数据暂存应对突发的大量数据如网络峰值流量避免数据丢失。标准I/O缓冲区与操作系统内核缓冲区的关系标准I/O库缓冲区将用户程序中的输入数据暂存避免频繁调用系统调用调用成本当缓冲区刷新时才会将数据发送到下一层内核缓冲区。内核中有内核缓冲区操作系统有刷新方案进行缓冲区管理来提升磁盘、网络等设备的 I/O 性能实例综合理解
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

成都网站制作套餐四川建设集团有限公司网站

前端文件下载新思路:告别兼容性烦恼的3大实战技巧 【免费下载链接】FileSaver.js An HTML5 saveAs() FileSaver implementation 项目地址: https://gitcode.com/gh_mirrors/fi/FileSaver.js 还在为前端文件下载功能的各种浏览器兼容问题头疼吗?Fi…

张小明 2026/1/10 17:18:30 网站建设

做视频网站公司要怎么做的外贸品牌网站制作

第一章:AI模型版本的 Docker 标签管理在AI模型的持续集成与部署流程中,Docker标签是管理不同模型版本的核心机制。合理的标签策略不仅能清晰标识模型迭代状态,还能提升团队协作效率和生产环境的可维护性。使用语义化标签区分模型版本 为Docke…

张小明 2026/1/2 12:09:45 网站建设

网站系统建设项目百度惠生活

一、核心原因总览类别具体原因影响选型错误百兆变压器替代千兆、带宽不足物理层被限死在 100Mbps,高频信号无法通过阻抗不匹配非 100Ω10% 标准、布局缺陷信号反射、眼图闭合,传输效率骤降安装 / 连接问题方向装反、中心抽头接错、网线 / 焊接不良信号畸…

张小明 2026/1/2 14:15:23 网站建设

如何给网站做dns解析网站推荐你懂我的意思吧2020知乎

ViGEmBus虚拟手柄驱动:解锁Windows游戏控制的终极密钥 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在数字娱乐的浪潮中,游戏体验的个性化需求日益增长。ViGEmBus作为一款革命性的内核级虚拟手柄驱动&…

张小明 2025/12/28 5:47:49 网站建设

tp5网站文档归档怎么做网络营销方案

当AI原生应用全面渗透、量子计算从实验室走向规模化试点,网络安全战场已从传统“边界筑墙”升级为“数字信任重构”的全方位博弈。2026年,新修订的《中华人民共和国网络安全法》正式施行,“促进发展、强化安全”的发展型安全观成为行业指引&a…

张小明 2025/12/28 5:46:10 网站建设