我听说文件描述符对每个进程都是唯一的。但是,它们对整个系统来说是独一无二的吗?它们如何在内核中处理?如果文件描述符在系统范围内不是唯一的,那么系统调用如read
,write
,close
等如何知道它们接收的文件描述符属于哪个进程?
答案 0 :(得分:4)
调用系统调用不涉及更改PID;系统调用只是查看当前PID的FD表。
答案 1 :(得分:2)
操作系统只需维护进程ID 和文件描述符组合的映射,以标识特定文件。它可以通过维护具有给定进程的任务控制块的文件描述符列表,或者通过实现者决定使用的任何其他方式来实现。
答案 2 :(得分:2)
但是,它们对整个系统来说是独一无二的吗?
不,它们是流程独有的。
典型的内核可以访问表示进行系统调用时的进程的数据结构。文件描述符可以像该数据结构中的数组索引一样简单。