>On Solaris, vfork() is 3x faster than fork(),
This depends very much on application. In Solaris, vfork() is more or less O(1) where fork() is a O(n) where "n" is the size of the address space: each r/w page which isn't shared needs to be marked "read-only" so the first modification clones the page to a writable copy. With shared library and the dynamic linker, there is very little that you can do between vfork() to exec/_exit in the child. The current Solaris implementation of posix_spawn() does use vfork() and it is known that its use is safe. For others this is less so. Ok, vfork() isn't completely O(1): it needs to halt all the other threads executing in the same address space, basically it stops to world Casper