gpt4 book ai didi

unix - Unix系统文件表

转载 作者:行者123 更新时间:2023-12-04 00:14:57 25 4
gpt4 key购买 nike

我对Unix系统文件表感到困惑。


当两个或多个进程打开一个文件进行读取时,系统文件表为每个进程创建单独的条目还是为单个条目创建?
如果为打开同一文件的多个进程创建了一个条目,它们的文件偏移量也将相同吗?
如果process 1打开file1.txt进行读取,并且process 2打开相同的文件file1.txt进行写入,系统文件表会创建一两个条目吗?

最佳答案

有三个“系统文件表”:有一个文件描述符表,用于将文件描述符(小整数)映射到打开文件表中的条目。打开文件表中的每个条目都包含文件偏移量和指向内存中inode表的指针。这是一张图片:
(来源:rich at www.cs.ucsb.edu

因此,打开的文件不仅只有一个文件表条目,每个进程也没有一个条目...每个open()调用都有一个条目,并且如果文件描述符是dup() ed或fork() ed,则共享它。

回答您的问题:

1)当两个或多个进程打开一个文件进行读取时,每次打开时打开文件表中都有一个条目。如果一个进程多次打开文件,则每次打开甚至有一个条目。

2)对于打开同一文件的不同进程,不会在打开文件表中创建单个条目(但是在内存中的inode表中只有一个条目)。

3)如果file1.txt在相同或两个不同的进程中打开了两次,则有两个不同的打开文件表条目(但内存inode表中只有一个条目)。

关于unix - Unix系统文件表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com