Linux-task_struct和文件系统及管道的关系

  推荐:文件描述符和文件指针的关系html

  fs_struct 记录该进程所在文件系统等信息。node

  files_struct 记录该进程当前打开的全部文件等信息,其中有一个元素为数组,数组索引是文件描述符,数组元素(FILE *类型)指向了 file 对象。由此可知两个文件描述符能够指向同一 file 对象,即便不在同一进程。linux

  file 为 FILE 对象,能够在 include/linux/fs.h 中查看。数组

结合以上知识来图函数

 

  进程与管道的接口和进程与文件的接口是一致的。不一样的是,在实现上,内核将读写的偏移量放在索引节点中而不是文件表中。spa

  建立无名管道函数 pipe 一次调用返回两个文件描述符,而且内核也会从文件表中找到两个空闲表项及一个内存 inode 索引节点,文件描述符和文件表一一对应,而两个文件表则对应同一个 inode,执行一个文件表的权限为读,一个文件表的权限为写。inode 的引用数设置为 2。管道存储数据的缓冲区会由内核从内存中分配出一页大小的内存来做为管道实现数据的读与写3d

相关文章
相关标签/搜索