核心解答

文件描述符(File Descriptor, FD 是 Unix/Linux 系统中用于指代被打开文件的 非负整数

它是内核为了高效管理已被打开的文件所创建的索引。在 Linux 的世界里,“一切皆文件”(包括普通文件、目录、管道、网络套接字、硬件设备等),所有对这些资源的操作(读、写、关闭)都是通过文件描述符来完成的。

解答思路

理解文件描述符可以遵循从“用户态”到“内核态”的逻辑链条:

  1. 进程视角:每个进程都有一个“账本”(文件描述符表)。
  2. 内核索引FD 只是这个账本上的行号(索引)。
  3. 资源映射:通过这个行号,内核能找到真正的文件对象(File Object)和底层资源。

深度解析与面试技巧

面试技巧
  • 追问方向:面试官可能会接着问 selectpollepoll 的区别(因为它们都涉及对大量 FD 的监听),或者问“FD 和文件指针 FILE* 的区别”。
  • 避坑指南:不要简单地说 FD 就是“文件”。要强调它是内核管理资源的索引,是进程与内核交互的句柄