2
为什么在创建子进程后立即调用exec()或exit()时使用vfork()?
操作系统概念和APUE说 通过vfork(),父进程被挂起,子进程使用父进程的地址空间。由于vfork()不使用写时复制,因此,如果子进程更改了父级地址空间的任何页面,则父级恢复后更改后的页面将对父级可见。因此,必须谨慎使用vfork(),以确保子进程不会修改父进程的地址空间。 vfork()旨在在子进程创建后立即调用exec()或exit()时使用。 我如何理解最后一句话? 当通过vfork()调用创建的子进程时exec(),是否exec()通过加载新程序来修改父进程的地址空间? 当通过vfork()调用创建子进程时,终止子进程时exit()是否 exit()不修改父进程的地址空间? 我偏爱Linux。 谢谢。