Jim*_*ter 27
有三个"系统文件表":有一个文件描述符表,它将文件描述符(小整数)映射到打开文件表中的条目.打开文件表中的每个条目包含(除其他外)文件偏移量和指向内存中inode表的指针.这是一张图片:
因此,打开文件既没有一个文件表条目,也没有每个进程只有一个...每个open()
调用都有一个,如果dup()
编辑或fork()
编辑了文件描述符,它就会被共享.
回答你的问题:
1)当两个或多个进程打开文件进行读取时,每次打开时打开文件表中都有一个条目.如果一个进程多次打开文件,则每个打开时甚至会有一个条目.
2)单个条目未在打开文件表创建为不同进程打开相同的文件(但在内存中的节点表只有一个条目).
3)如果file1.txt打开两次,在相同或两个不同的进程中,有两个不同的打开文件表条目(但在内存中的inode表中只有一个条目).