加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Unix系统文件表

发布时间:2020-12-16 01:08:03 所属栏目:安全 来源:网络整理
导读:我对Unix系统文件表感到困惑. 当两个或多个进程打开文件进行读取时,系统文件表是否为每个进程或单个条目创建单独的条目? 如果为打开同一文件的多个进程创建单个条目,它们的文件偏移量是否也相同? 如果进程1打开file1.txt进行读取,进程2打开相同的文件file1
我对Unix系统文件表感到困惑.

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

有三个“系统文件表”:有一个文件描述符表,它将文件描述符(小整数)映射到打开文件表中的条目.打开文件表中的每个条目包含(除其他外)文件偏移量和指向内存中inode表的指针.这是一张图片: http://www.cs.ucsb.edu/~rich/class/cs170/notes/FileSystem/filetable.rich.jpg

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

回答你的问题:

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

2)在打开文件表中没有为打开相同文件的不同进程创建单个条目(但是在内存中的inode表中只有一个条目).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读