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

时间:2013-06-28 17:02:55

标签: linux sockets unix linux-kernel file-descriptor

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

  

但是,它们对整个系统来说是独一无二的吗?

不,它们是流程独有的。

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