标签: vfork

当子进程在创建后立即调用 exec() 或 exit() 时,为什么要使用 vfork()?

操作系统概念和 APUE 说

使用vfork(),父进程被挂起,子进程使用父进程的地址空间。因为 vfork() 不使用写时复制,如果子进程更改了父地址空间的任何页面,一旦恢复,父进程将可以看到更改的页面。因此,必须谨慎使用 vfork(),以确保子进程不会修改父进程的地址空间。

vfork() 旨在在子进程创建后立即调用 exec() 或 exit() 时使用。

我该如何理解最后一句话?

vfork()调用创建的子进程时exec(),不会exec()通过加载新程序来修改父进程的地址空间?

当一个子进程的创建vfork()调用exit(),并 exit()终止儿童在不修改父进程的地址空间?

我更喜欢Linux。

谢谢。

linux process exit exec vfork

11
推荐指数
1
解决办法
4200
查看次数

执行“没有 exec 的 vfork”的进程如何最终进入长时间不间断的睡眠?

这个答案中,用户建议

通常,不间断睡眠不会持续很长时间,但是在 Windows 下,损坏的驱动程序或损坏的用户空间程序(没有 exec 的 vfork)最终可能会永远在 D 中睡眠。

用户空间程序如何在非错误内核上真正锁定在 D 中?我认为用户模式能够故意卡在 D 中有点小漏洞......

linux process vfork

5
推荐指数
1
解决办法
349
查看次数

标签 统计

linux ×2

process ×2

vfork ×2

exec ×1

exit ×1