【发布时间】:2017-11-15 23:11:21
【问题描述】:
有什么方法可以创建一个新进程,即使在执行之后也可以共享您的文件描述符表? clone(CLONE_FILES) 不起作用,正如手册页所说:
如果共享文件描述符表的进程调用 execve(2),则其文件描述符表是重复的(未共享)。
【问题讨论】:
-
这里的目标是什么?一旦进程不再是相同的可执行文件,为什么您还需要文件描述符表的实时共享副本?乍一看似乎很荒谬,所以我怀疑这可能是an XY problem。
-
@ShadowRanger 我正在为 Linux 编写一个 x86 用户模式模拟器,并通过在 ptrace 下与模拟器同时运行一个真实进程并比较每条指令的 cpu 状态来对其进行测试。当需要模拟 mmap 调用时,我想采用父级中使用的 FD 并覆盖 edi 以在子级中使用它。这不是一个非常常见的用例,这是肯定的。
-
@JonathanLeffler 我不关心 POSIX,我只想让它在 Linux 上工作
-
@JonathanLeffler 我感觉我是世界上唯一一个真正想要这样做的人......
-
@tbodt 你可能是唯一一个想要这样做的人,出于某种原因,有些人会认为你是个白痴。