重读APUE(3)-dup与文件表项

喜欢而已 提交于 2019-12-02 21:13:04

下图为调用dup之后的文件指针状态,包含如下信息:

1. dup选择了一个最小的未使用的描述符3;

2. dup(1)之后,描述符1和描述符3指向同一个文件表项;

3. dup(1)的返回值即为复制得到的描述符3;

4. 补充dup2,dup2可以指定复制的目标描述符,如果该描述符与被复制的描述符相同,会直接返回该描述符;如果不同,则会先关闭描述符,然后进行复制;注意,dup2的关闭和复制操作是原子的;

5. 补充open,进程每一次open调用都会打开一个新的文件表项,一个新的描述符指向这个文件表项,当open同一个文件多次也会新建描述符和文件表项;如果重复打开同一个文件,则文件表项中的node节点指向同一个inode;

下图为多次open同一个文件的情况(fd1,fd3);其中fd2=dup(fd1);

图片来自:APUE

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!