我听说文件描述符对于每个进程都是唯一的。但是,它们是整个系统独有的吗?它们在内核中是如何处理的?如果文件描述符在系统范围内不是唯一的,那么系统调用(如read
、write
、close
等)如何知道它们接收到的文件描述符属于哪个进程?
问问题
343 次
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 回答