文件描述符、文件打开表和inode表

文件描述符

文件描述符(进程级)就是一个数组,数组的每个下标内容都会指向打开文件表(系统级)的一个偏移量。每一个进程都会创建一个文件描述符,子进程会继承父进程的文件描述符。同一进程下多次打开同一个文件,文件描述符不一样,但是指向的偏移量一样,两个描述符对文件的操作不会相互影响。父子进程的文件描述符相同,所以会父子进程之间对文件的操作会相互影响。

文件打开表

文件打开表属于系统级文件。内核会对每一个打开的文件存储到这个描述表格中。表格中的每一项称为一个文件句柄,它存储了一个打开文件的所有相关信息(如文件偏移量,文件状态,inode地址)。

inode表

每一个文件都有自己的inode(索引节点)信息(稍后软链接,硬链接再补充)
多个文件名可能对应同一个inode,多个硬链接也可能对应同一个inode。inode表中包含以下信息:

  • 文件类型,例如常规文件、套接字或 FIFO。
  • 文件大小。
  • 时间戳,比如创建时间、更新时间。
  • 文件锁。
    借用c语言中文网里面的一张图,可以思考一下图中的箭头都是什么情况下会发生
    文件描述符、文件打开表和inode表_第1张图片

你可能感兴趣的:(Linux,linux,运维,服务器)