【发布时间】:2021-04-08 20:46:37
【问题描述】:
您可能知道,进程中的文件描述符标识文件操作(读取、写入...)。当我们对这些文件进行操作时,我们必须与操作系统进行通信,因为它是管理文件的那个。为此,操作系统有一个中间指针表,其中为每个进程中每个打开的 FD 创建一个条目。此表包含有关所有打开的 FD 的信息(文件指针、操作类型...)。我的问题是,当一个进程被分叉时,这个表会发生什么?我直观的回答是,属于分叉进程的表条目在表中重复,以便在子进程中有其他中间指针,但我没有找到任何有关此的信息,所以我很高兴有人澄清这一点。
先谢谢=)
【问题讨论】:
-
parent 和 child 没有区别,它们基本上都是副本,除了 fork() 调用的返回值。 [嗯:还有一些额外的 minor 差异,主要涉及锁和信号。请参阅这些的手册页]
-
我认为我的问题被误解了,因为我说的不是进程的 FDs 表,而是 OS 上的表。
-
请阅读一些书籍(巴赫,史蒂文斯,...) 有每个进程表和系统文件表。一切尽在书中。
标签: c unix fork file-descriptor