3

我听说文件描述符对于每个进程都是唯一的。但是,它们是整个系统独有的吗?它们在内核中是如何处理的?如果文件描述符在系统范围内不是唯一的,那么系统调用(如readwriteclose等)如何知道它们接收到的文件描述符属于哪个进程?

4

3 回答 3

4

调用系统调用不涉及更改 PID;系统调用只是查看当前 PID 的 FD 表。

于 2013-06-28T17:06:51.670 回答
2

操作系统只需维护进程 ID文件描述符组合的映射即可识别特定文件。它可以通过使用给定进程的任务控制块维护文件描述符列表来实现,或者通过实现者决定使用的任何其他方式来实现。

于 2013-06-28T17:05:38.783 回答
2

但是,它们是整个系统独有的吗?

不,它们是流程独有的。

当进行系统调用时,典型的内核可以访问表示进程的数据结构。文件描述符可以像在该数据结构中的数组中的索引一样简单。

于 2013-06-28T17:23:10.843 回答