NSPR 中的进程分叉

NetScape Portable Runtime (NSPR) 中提供的线程在不同的平台上使用不同的机制实现。在某些平台上,NSPR 线程直接一对一映射到平台供应商提供的线程,在其他平台上,NSPR 线程基本上是单个进程中的用户级线程(没有内核线程),而在其他平台上,NSPR 线程是在单个地址空间中的一个或多个内核线程之上实现的用户级线程。

NSPR 不会覆盖 fork 函数,因此,当从 NSPR 线程调用 fork 时,结果在各个平台上会有所不同。父进程中存在的所有线程都可能在子进程中复制,只有调用线程可能在子进程中复制,或者只有调用内核线程可能被复制。

因此,为了在所有平台上保持一致性,建议在 NSPR 线程中使用 fork 时;

  1. 应该在子进程中调用 exec 函数。

  2. 在调用 exec 之前,不应在子进程中调用任何 NSPR 函数。