🏷️ 知识点:硬链接

共 1 道相关题目

2017 年第 31 题 操作系统 选择题

若文件 f1 的硬链接为 f2,两个进程分别打开 f1 和 f2,获得对应的文件描述符为 fd1 和 fd2,则下列叙述中,正确的是( )。

Ⅰ. f1 和 f2 的读写指针位置保持相同

Ⅱ. f1 和 f2 共享同一个内存索引结点

Ⅲ. fd1 和 fd2 分别指向各自的用户打开文件表中的一项

inode 文件链接

A. 仅Ⅲ B. 仅Ⅱ、Ⅲ C. 仅Ⅰ、Ⅱ D. Ⅰ、Ⅱ和Ⅲ

[tag_link]

正确答案:B

背景知识:

  • 硬链接:f1 和 f2 是同一个 inode 的两个目录项(即它们指向同一个文件的 inode),共享 相同的索引节点(inode) 和数据块。
  • 打开文件的过程:每个进程在打开文件时会创建:
  • 一个对应的 用户级打开文件表项(即 fd 指向它)
  • 用户打开文件表项再指向 系统级打开文件表项(Open File Table)
  • 系统级表项包含文件的读写偏移量(读写指针)和对 inode 的引用分析选项:Ⅰ. f1 和 f2 的读写指针位置保持相同❌ 错误。虽然 f1 和 f2 是同一个文件(硬链接),但两个进程分别打开它们时,会在系统级打开文件表中生成两个不同的表项,每个表项维护独立的文件偏移量(读写指针),所以互不影响。Ⅱ. f1 和 f2 共享同一个内存索引结点✅ 正确。硬链接的本质就是多个目录项共享同一个 inode。即使路径不同(f1 和 f2),它们最终指向的是同一个 inode。Ⅲ. fd1 和 fd2 分别指向各自的用户打开文件表中的一项✅ 正确。每个进程维护自己的文件描述符表(用户级文件表),fd1fd2 分别是两个不同进程打开文件得到的描述符,它们自然是指向各自进程的用户打开文件表项。Ⅱ 和 Ⅲ 正确,因此,正确答案为 B。