我正在看另一个问题(https://stackoverflow.com/q/47845/537980),并看到了一个答案,关于每个进程创建时另一个操作系统必须做多少设置。
我想知道。是否可以进行设置(一次,然后 fork),然后进行部分的exec 加载变量部分?那只是过程的一部分应该被替换。
部分的一个具体例子是。我们想要加载一些执行环境,然后用 exec 来替换加载器,但不是环境。所以这是控制被替换的内容(我知道 exec 不会替换所有内容(例如,它保留文件描述符表的 COW))。
我意识到这可能没有任何实际用途,因为fork
和exec
在许多 Unix 上相对便宜。
答案1
未经测试的想法的部分答案。
按名称打开文件,exec
您仍然拥有文件的句柄,因此mmap
它们。
答案2
当然你可以做一个“部分执行”;你
mmap(PROT_EXEC)
从另一个文件中分页到你的地址空间,跳进它们,雅皮士! “部分执行”。我不知道你是否可以复制 exec 在用户空间中所做的一切 - 但你当然可以复制其中的大部分。
——摘自@pizdelect 的评论