你好
我正在编写服务器的一部分,它应该调度其他一些子进程。
因为我想等待一些进程,并且不等待完成而调度其他进程,所以我对第二种进程使用双叉(从而避免僵尸进程)。
问题是,我的服务器有很多内存,所以 fork 需要很长时间(即使是在 Linux 中使用的写时复制 fork ,它只复制分页表)
我想用 vfork() 替换 fork(),第二个 fork 很容易(因为它只在子进程中调用 execve()),但我找不到任何方法可以替换第一个。
有谁知道我该怎么做?
谢谢!

服务器是一个 linux (RH5U4),用 C++ 编写。

最佳答案

为什么不简单地让新执行的进程自己做另一个分支?这样只有一个小的简单进程才会复制其页表?

编辑:

当然,父进程必须执行一个短期的 wait() 来清除僵尸进程,但是孙子进程可以根据需要运行多久。

关于c++ - 使用 vfork 双叉,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2617289/

10-12 17:35
查看更多