多线程编程指南

虚拟 fork -vfork

标准 vfork(2) 函数在多线程程序中并不安全。vfork(2)(与 fork1(2) ¤@样)仅复制子进程中的调用线程。就像在非线程实现中一样,vfork() 不会复制子进程的地址空间。

请注意,子进程中的线程在调用 exec(2) 之前不会更改内存。vfork() 为子进程提供父地址空间。子进程调用 exec() 或退出之后,父进程将取回其地址空间。子进程不得更改父进程的状态。

例如,如果在对 vfork() 的调用与对 exec() 的调用之间创建新的线程,则会出现灾难性问题。