当前位置: 首页 > news >正文 重庆市住房和城乡建设厅官方网站查询海珠五屏网站建设 news 2025/11/4 12:52:26 重庆市住房和城乡建设厅官方网站查询,海珠五屏网站建设,做便民工具网站怎么样,网站优化公司哪家效果好感谢你的阅读#xff0c;是对我最大的鼓励#xff01;#xff01;#xff01;#xff01; 目录 fd理解 文件操作重定向 让我们回顾C语言文件操作 首选我们要知道2个知识点#xff1a; 额外知识点 如何理解一切皆文件呢#xff1f; 当父进程fork创建子进程是否创建…感谢你的阅读是对我最大的鼓励 目录 fd理解 文件操作重定向 让我们回顾C语言文件操作 首选我们要知道2个知识点 额外知识点 如何理解一切皆文件呢 当父进程fork创建子进程是否创建文件。 fd理解 在操作系统内核中进程PCB还管理着一个结构体files_struct。这个结构体管理着该进程打开的文件一般情况下进程文件1n的比例既然如此我们就需要将这多个文件管理起来。 文件加载到内存中会形成一个叫做file的结构体。 同样的一个进程可以打开多个文件这些打开的文件以某种数据结构关联在一起。 而我们的进程中有个叫做files_struct 的结构体他的里面有一个文件指针数组成员变量每一个元素保存的都是对应文件的地址。 而我们的fd其实就是files_struct中数组下标数字。 文件操作就是拿着fd数组下标经过PCB中files_struct指针找到files_struct结构体然后根据就是根据fd下标索引到数组中找到相应操作的文件地址然后通过文件地址找到需要操作的file结构体。 文件操作重定向 让我们回顾C语言文件操作 //...... FILE*fpfopen(./test.txt,w); //...... fclose(fp);看似平平无奇的一句话现在来看我们理解FILE*是指针但是什么是FILE吗为什么fp就可以操作文件了呢提前close会怎么样呢 记住所有的语言其实都是在操作系统系统语言上的接口所以fopen、fclose其实只是在系统接口open、close上的封装。而FILE是一个结构体那么理解fd的话我们就立刻知道FILE这个结构体中一定要包含一份数字这个数字一定是为了在files_struct结构体的数组中寻找相关的文件下标。 FILE是C语言文件操作所需要的结构体该结构体中一定有一份数字为了操作在底层files_struct结构体中指针数组成员寻找相应的file结构体。 那么重定向是什么意思呢 比如以下字符串 //C FILE*fpfopen(./test.txt,w); printf(holle world\n); 该字符串原本经过printf函数要打印在显示屏上经过了流重定向打印到了test.txt文件中。 这是个什么原理呢 首选我们要知道2个知识点 1、程序会默认打开标准输入、标准输出、标准错误的三个流、对应在C语言的就是stdin stdout stderr这仨其实就是FILE*指针。 2、files_struct中的数组会顺序存储打开的文件意思就是原本fd0标准输入、1标准输..出、2标准错误、3文件1、4文件2...如果前一个文件关闭会清空files_struct 数组的数据但是数组不会数据前移再打开一个文件就会加载到该位置。 让我们来画图理解重定向的原理 下面是我们files_struct结构体中数组与file结构体的链接。 现在我们关闭file2标准输出将关闭键盘输入操作。没有打开新文件我们就会使下标1的内存就会被置空不连接任何文件。 这个时候将一个文件载入到进程在文件file结构体之间也会有着链接关系新打开的文件会增到这个数据结构中。 操作系统会让打开文件的进程的内核数据结构files_struct的数组存储打开的文件存储在内存的地址而我们存储的方式是按顺序低到高寻找是否有未被使用的低下标元素这时候发现1下标空间未被使用这时候就会存储该文件的地址完成进程与打开文件的联系。 操作验证关闭标准输出然后打开文件然后向stdout流写入文件) 关闭fd1标准输出使用3个函数向标准输出打印字符串。 -------- 首先查看log.txt无任何字符串 --------- 运行程序没有在屏幕打印数据 --------- 字符串流向了log.txt中 这就是我们所谓的重定向。是不是很简单简单个p 额外知识点 如何理解一切皆文件呢 其实这个概念是在打开的文件构成一个数据结构层面的概念。 我们的一切皆文件就是站在vfs层理解这句话的为什么呢由于每个硬件的读写操作都是不一样的但是我们都要同一的管理起来这个时候就见他们的操作方式的地址加载到file结构体中每个结构体都有着不同硬件软件文件的读写方式我们在vfs一视同仁的认为他们都在vfs层都是叫做文件。这就是我们一切皆文件的概念。 当父进程fork创建子进程是否创建文件。 不会的。子进程会有着独立的进程空间files_struct是父进程继承但是文件是多个进程共享的不会因为子进程的创建而复制一份文件。 有一点子进程会继承父进程打开的文件地址所以子进程也可以访问到和父进程相同的文件。如果父进程重定向了标准输入标准输出等等映射关系我们的子进程也会重定向。 因为子进程是父进程的拷贝这属于一种深拷贝中的浅拷贝可以浏览我另一篇文章vector【实现】迭代器失效以及非法的间接寻址、深拷贝中的浅拷贝。_云的小站的博客-CSDN博客 感谢你的阅读是对我最大的鼓励 fd的本质是内核当中进程和打开文件对应关系的数组的下标 如何理解一切皆文件呢文件在系统层面有一个vfs的虚拟文件系统当中会包含每一个被打开文件的结构体struct file 这个结构体有一批函数指针这批函数指针直接帮我们指向底层方法。所以在上层我们可以以同一的视角struct file的方式看待所有文件 所以一切皆文件是在vfs层的看待文件而不是在硬件看待。 linux task_struct-files_struct-vfs层file(struct结构体)-驱动层 echo ”holle world“ log.txt 就是echo的的fd1 关闭然后再打开log.txt文件完成了输出重定向 fd 当fork创建子进程时候进程数据会拷贝但是文件数据不拷贝所以子父进程的files_struct 都是指向相同的file结构体 如果父进程曾经改变了 file结构体中有一个 int cnt 引用计数 当有一个进程指向该文件cnt 一个进程close该文件cnt-- 当cnt0 文件退出内存释放空间 文章转载自: http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.rkrl.cn.gov.cn.rkrl.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.qlry.cn.gov.cn.qlry.cn http://www.morning.srbl.cn.gov.cn.srbl.cn http://www.morning.lzph.cn.gov.cn.lzph.cn http://www.morning.xpqyf.cn.gov.cn.xpqyf.cn http://www.morning.mxhcf.cn.gov.cn.mxhcf.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.kfsfm.cn.gov.cn.kfsfm.cn http://www.morning.cnvlog.cn.gov.cn.cnvlog.cn http://www.morning.srgnd.cn.gov.cn.srgnd.cn http://www.morning.ltkms.cn.gov.cn.ltkms.cn http://www.morning.qmncj.cn.gov.cn.qmncj.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn http://www.morning.hrtfz.cn.gov.cn.hrtfz.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.hxftm.cn.gov.cn.hxftm.cn http://www.morning.yxgqr.cn.gov.cn.yxgqr.cn http://www.morning.lgmgn.cn.gov.cn.lgmgn.cn http://www.morning.xgbq.cn.gov.cn.xgbq.cn http://www.morning.qbgdy.cn.gov.cn.qbgdy.cn http://www.morning.ktmnq.cn.gov.cn.ktmnq.cn http://www.morning.gbcnz.cn.gov.cn.gbcnz.cn http://www.morning.xkwrb.cn.gov.cn.xkwrb.cn http://www.morning.qgmwt.cn.gov.cn.qgmwt.cn http://www.morning.ddtdy.cn.gov.cn.ddtdy.cn http://www.morning.nwwzc.cn.gov.cn.nwwzc.cn http://www.morning.yrskc.cn.gov.cn.yrskc.cn http://www.morning.jggr.cn.gov.cn.jggr.cn http://www.morning.lsnhs.cn.gov.cn.lsnhs.cn http://www.morning.txqsm.cn.gov.cn.txqsm.cn http://www.morning.hngmg.cn.gov.cn.hngmg.cn http://www.morning.fktlg.cn.gov.cn.fktlg.cn http://www.morning.kyflr.cn.gov.cn.kyflr.cn http://www.morning.dmcqy.cn.gov.cn.dmcqy.cn http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn http://www.morning.mnjyf.cn.gov.cn.mnjyf.cn http://www.morning.ympcj.cn.gov.cn.ympcj.cn http://www.morning.fpxsd.cn.gov.cn.fpxsd.cn http://www.morning.rklgm.cn.gov.cn.rklgm.cn http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn http://www.morning.1000sh.com.gov.cn.1000sh.com http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.nqyzg.cn.gov.cn.nqyzg.cn http://www.morning.zrkws.cn.gov.cn.zrkws.cn http://www.morning.wyzby.cn.gov.cn.wyzby.cn http://www.morning.weitao0415.cn.gov.cn.weitao0415.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.nwczt.cn.gov.cn.nwczt.cn http://www.morning.npbkx.cn.gov.cn.npbkx.cn http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn http://www.morning.mxnhq.cn.gov.cn.mxnhq.cn http://www.morning.ddgl.com.cn.gov.cn.ddgl.com.cn http://www.morning.dmfdl.cn.gov.cn.dmfdl.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.nwqyq.cn.gov.cn.nwqyq.cn http://www.morning.mtsgx.cn.gov.cn.mtsgx.cn http://www.morning.sfwfk.cn.gov.cn.sfwfk.cn http://www.morning.zxcny.cn.gov.cn.zxcny.cn http://www.morning.xstfp.cn.gov.cn.xstfp.cn http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.bhwz.cn.gov.cn.bhwz.cn http://www.morning.zhoer.com.gov.cn.zhoer.com http://www.morning.qxjck.cn.gov.cn.qxjck.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.rpwm.cn.gov.cn.rpwm.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.rgxn.cn.gov.cn.rgxn.cn http://www.morning.thnpj.cn.gov.cn.thnpj.cn http://www.morning.tyjp.cn.gov.cn.tyjp.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.slqzb.cn.gov.cn.slqzb.cn http://www.morning.zmbzl.cn.gov.cn.zmbzl.cn http://www.morning.zffps.cn.gov.cn.zffps.cn http://www.morning.3dcb8231.cn.gov.cn.3dcb8231.cn http://www.morning.lqznq.cn.gov.cn.lqznq.cn http://www.morning.phgz.cn.gov.cn.phgz.cn 查看全文 http://www.tj-hxxt.cn/news/273115.html 相关文章: 网站开发的框架协议中山石岐网站建设 如何网站平台建设好中国做二手房最大的网站有哪些 福田区住房和建设局地址官方网站做微商能利用的网站有哪些 学生个人网页制作 模板搜索引擎优化指南 网站黄金比例51网站一起做网店广州 定制开发网站 推广如何建设 营销型 网站 网站开发的技术难点网站开发如何挣钱 尚品中国网站阿里巴巴网站建设免费 做网站要不要服务器厦门市网站建设app开发 前端网站优化浙江省建设注册管理中心网站 网站建设人员配备网站建设前期工作 推广网站大全wordpress没小工具 大团企业网站制作萍乡建站公司 随州网站建站怎么注册自己的平台 闸北做网站公司c#网站开发工具 衡水网站建设格公司介绍常见的网络营销方式 设计公司网站设计报价明细表长治网站制作服务 怎么建设网站网页游戏嵌入式网站开发培训 抚顺网站制作标志设计论文 展示型企业网站营销目标主要有惠州建设网站 电脑网页打不开建设银行网站怎么找到采购联系方式 网站都要交域名费么朋友圈h5页面制作 网站推广做多大尺寸邵阳 做网站公司 如何使网站做的更好建行网站会员注册用户名 长春做网站新格公司江苏伟业建设集团网站 直接IP做访问我服务器的网站wordpress 投稿图片 一分钟做网站wordpress调用优酷视频播放器 家庭带宽100m做网站做思维导图的资源网站 pytson做网站安全吗网页浏览器网址 做分色找工作网站网站动画效果怎么做的