【摘要】:第一个fs_struct包含了指向进程的VFSinode和其屏蔽码。第二个数据结构files_struct包含了进程当前所使用的所有文件的信息。这些抽象接口十分强大,它们使得Linux能够支持多种文件类型。在Linux中,管道文件是用我们下面要讨论的机制来实现的。每当打开一个文件时,位于files_struct中的一个空闲文件指针将被用来指向这个新的文件结构。Linux进程希望在进程启动时至少有三个文件描述符被打开,它们是标准输入,标准输出和标准错误输出,一般进程会从父进程中继承它们。
2.6 进程访问的文件
任务结构体task_struct给出了两个描叙系统中每个进程所使用的文件系统相关信息。
第一个fs_struct包含了指向进程的VFSinode和其屏蔽码。这个屏蔽码值是创建新文件时所使用的缺省值,可以通过系统调用来改变。
第二个数据结构files_struct包含了进程当前所使用的所有文件的信息。程序从标准输入中读取并写入到标准输出中去。任何错误信息将输出到标准错误输出。这些文件有些可能是真正的文件,有的则是输出/输入终端或者物理设备,但程序都将它们视为文件。每个文件有一个描述符,files_struct最多可以包含256个文件数据结构,它们分别描述一个被当前进程使用的文件。f_mode域表示文件将以何种模式创建:只读、读写还是只写。f_pos中包含下一次文件读写操作的开始位置。f_inode指向描叙此文件的VFS inode,f_ops指向一组可以对此文件进行操作的函数入口地址指针数组。这些抽象接口十分强大,它们使得Linux能够支持多种文件类型。在Linux中,管道文件是用我们下面要讨论的机制来实现的。
每当打开一个文件时,位于files_struct中的一个空闲文件指针将被用来指向这个新的文件结构。Linux进程希望在进程启动时至少有三个文件描述符被打开,它们是标准输入,标准输出和标准错误输出,一般进程会从父进程中继承它们。这些描述符用来索引进程的fd数组,所以标准输入,标准输出和标准错误输出分别对应文件描述符0,1和2。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。