系统调用如何知道一个文件描述符属于哪个进程?

3

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

3个回答

4
调用系统调用不会涉及PID的变化;系统调用只是查看当前PID的FD表。

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

2

但是,它们是否唯一于整个系统?

不,它们只唯一于一个进程。

当系统调用发生时,典型的内核可以访问表示该进程的数据结构。文件描述符可以简单地作为该数据结构中数组的索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接