是由每个进程自己维护的文件描述符表

时间:2016-03-20 08:11:10

标签: operating-system system-calls file-descriptor

维基说

  

在Unix的传统实现中,文件描述符索引到由内核维护的每进程文件描述符表,该表又被索引到由所有进程打开的系统范围的文件表中,称为文件表。

当您执行开放式系统调用时,内核仅返回fd,或者更确切地说是在每个进程中 它还为被调用者进程创建类似fd表的东西吗?

fd在系统范围内是独一无二的吗?我真的很好奇当我们打开或写入文件时会发生什么?

1 个答案:

答案 0 :(得分:0)

要理解这一点,您可以认为,当您打开任何文件,管道或设备文件时,它们都有与之关联的不同驱动程序,因此要知道在使用read,write,lseek等时使用哪个驱动程序,以及链接inode以更新上次访问或锁定文件,内核创建与每个文件关联的数据结构。

并且其他后台进程也可能正在运行,因此要管理这些文件,内核会创建这些数据结构的表,并在其表中返回该数据结构行的索引号。我们称之为文件描述符。

所以按照你的问题,每次调用open时都会创建单行,它可以在单个进程中多次或者可以在不同的进程中,总是返回与内核中的表相关联的FD总是不同的。< / p>