Unix 是否需要文件描述符表?

Unix 是否需要文件描述符表?,unix,filesystems,file-descriptor,inode,Unix,Filesystems,File Descriptor,Inode,根据我读到的内容,进程得到一个索引到用户fd表中的fd,用户fd表又返回一个指向文件表的指针,该文件表维护已打开文件的偏移量、指向inode的指针和其他属性。所以fd基本上是在维护一种访问磁盘上文件的方法,它在文件中的位置。所以像open这样的超高命令直接将指针返回到文件表中,而不是通过用户fd表的间接寻址?是出于安全还是其他原因,还是我理解错了 fd表不是为每个新进程分配的吗?文件表是内核中的全局表吗?就是这样。内核中的表是跟踪系统中每个打开的文件并正确管理所有这些文件所必需的,进程的用户空间

根据我读到的内容,进程得到一个索引到用户fd表中的fd,用户fd表又返回一个指向文件表的指针,该文件表维护已打开文件的偏移量、指向inode的指针和其他属性。所以fd基本上是在维护一种访问磁盘上文件的方法,它在文件中的位置。所以像open这样的超高命令直接将指针返回到文件表中,而不是通过用户fd表的间接寻址?是出于安全还是其他原因,还是我理解错了

fd表不是为每个新进程分配的吗?文件表是内核中的全局表吗?就是这样。内核中的表是跟踪系统中每个打开的文件并正确管理所有这些文件所必需的,进程的用户空间中至少需要一些信息。用户空间需要知道它打开的文件的文件表条目,这样系统调用就不会直接给出指向该文件的指针,而不是通过用户fd表,因为用户空间指针不能指向内核中的某个内容。如果程序在用户空间中模式内核不允许访问内核内存,但是如果uintptr a=open(..);read(a,buffer,sizeof(buffer)程序将进入内核模式进行系统调用,这将允许访问内核内存,所以wldnt有一个指针可以简化内核的一个步骤吗?