扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Linux系统中每个进程都有两个数据结构用来描述进程与文件相关的信息,其中一个是fs_struct结构,它包含两个指向VFS索引节点的指针,分别指向root(即根目录节点)和pwd(即当前目录节点);
另一个是files_struct结构,它保存该进程打开文件的有关信息。每个进程能够同时打开的文件至多是256个,分别由fd[0]~fd[255]所表示的指针指向对应的file结构。前面在I/O重定向中用到的文件描述字(如0、1、2等)其实就是fd指针数组的索引下标。
在file结构中,f_mode是文件打开的模式,如“只读”、“只写”、“读写”等;f_pos是文件当前的读写位置;
f_flag包含许多标志位,用以表示文件的一些属性;f_count表示对该文件的共享计数;f_inode指向VFS中该文件的索引节点;f_op是指向file_operations结构的指针,该结构中包含了对该文件进行操作的各种例程。利用f_op可以针对不同的文件定义不同的操作函数。
Linux系统进程启动时自动打开三个文件,即标准输入、标准输出和标准错误输出,它们的文件描述字分别是0、1和2。如果在进程运行时进行输入输出重定向,则这些文件描述字就指向给定的文件,而不是标准的终端输入/输出。
每当进程打开一个文件时,就从files_struct结构中找一个空闲的文件描述字,使它指向打开文件的描述结构file。对文件的操作要通过file结构中定义的文件操作例程和VFS索引节点的信息来完成。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者