首页 > 解决方案 > 当一个进程被分叉时,中间指针表会发生什么?C 叉函数

问题描述

您可能知道,进程中的文件描述符标识文件操作(读取、写入...)。当我们对这些文件进行操作时,我们必须与操作系统进行通信,因为它是管理文件的那个。为此,操作系统有一个中间指针表,其中为每个进程中每个打开的 FD 创建一个条目。此表包含有关所有打开的 FD 的信息(文件指针、操作类型...)。我的问题是,当一个进程被分叉时,这个表会发生什么?我直观的回答是,属于分叉进程的表条目在表中重复,以便在子进程中有其他中间指针,但我没有找到任何有关此的信息,所以我很高兴有人澄清这一点。

提前感谢=)

标签: cunixforkfile-descriptor

解决方案


该表是重复的。复制不仅仅是一个memcpy()未完成的 IO,它只在父进程中完成。子代继承父代的所有句柄。内核文件对象本身重复,而只是它们的表引用。


推荐阅读