UNIX 系统进程与终端 I/O 编程详解
1. 进程相关函数
在 UNIX 系统中,进程的创建和管理是非常重要的操作。除了常见的 fork 函数,还有 vfork 函数。
1.1 vfork 函数
大多数实现虚拟内存的 UNIX 版本都提供了 vfork 函数。与 fork 不同, vfork 不会复制调用进程的整个地址空间,子进程会使用父进程的地址空间、内存和控制线程来执行。
vfork 的目的是在通过 exec 执行另一个程序时,提供一种更高效的创建子进程的方法。因为调用 exec 无论如何都会覆盖调用进程的地址空间,所以先复制所有内容意义不大。需要注意的是,如果使用 vfork 创建一个不立即调用 exec 的进程,可能会导致严重问题。
在较新的 UNIX 版本中, vfork 的需求已经减少,因为这些版本通常在 fork 中实现了写时复制(copy-on-write)机制。也就是说,除非子进程尝试修改父进程的地址空间,否则不会为子进程复制该地址空间。由于 vfork 是非标准的,不建议在新程序中使用,但在移植旧软件时可能会偶尔遇到。另外, vfork 函数在 IRIX 5.x 中不可用。
UNIX进程与终端I/O编程
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



