博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
minix文件读写中使用的一个额外但是必须的结构filp表
阅读量:4963 次
发布时间:2019-06-12

本文共 1701 字,大约阅读时间需要 5 分钟。

1.为什么需要他

因为子进程与父进程之间需要共享文件读写指针。

2.构成

代码:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                                      servers/fs/file.h++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 21700    /* This is the filp table.  It is an intermediary between file descriptors and 21701     * inodes.  A slot is free if filp_count == 0. 21702     */ 21703     21704    EXTERN struct filp { 21705      mode_t filp_mode;             /* RW bits, telling how file is opened */ 21706      int filp_flags;               /* flags from open and fcntl */ 21707      int filp_count;               /* how many file descriptors share this slot?*/ 21708      struct inode *filp_ino;       /* pointer to the inode */ 21709      off_t filp_pos;               /* file position */   File: Page: 928 servers/fs/file.h 21710     21711      /* the following fields are for select() and are owned by the generic 21712       * select() code (i.e., fd-type-specific select() code can't touch these). 21713       */ 21714      int filp_selectors;           /* select()ing processes blocking on this fd */ 21715      int filp_select_ops;          /* interested in these SEL_* operations */ 21716     21717      /* following are for fd-type-specific select() */ 21718      int filp_pipe_select_ops; 21719    } filp[NR_FILPS]; 21720     21721    #define FILP_CLOSED     0       /* filp_mode:  associated device closed */ 21722     21723    #define NIL_FILP (struct filp *) 0      /* indicates absence of a filp slot */

filp真正必须包含的内容是共享文件的位置,但是实现时候将inode也放在里面。

这么做的好处是,在进程表中的文件描述符数组只需要包含指向filp表项的指针。

 

 

转载于:https://www.cnblogs.com/jun14/archive/2012/12/09/2809999.html

你可能感兴趣的文章
C#生成随机数
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>