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

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

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

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

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

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

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

 

 

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

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

 

图片来自:APUE

 

相关文章:

  • 2021-07-16
  • 2021-09-10
  • 2021-06-10
  • 2022-03-02
  • 2022-12-23
  • 2021-10-18
  • 2021-06-25
  • 2021-11-28
猜你喜欢
  • 2021-08-20
  • 2021-07-04
  • 2021-09-01
  • 2022-02-14
  • 2022-01-07
  • 2021-06-17
  • 2021-10-18
相关资源
相似解决方案