>>>> "GC" == Glynn Clements
<glynn(a)sensei.co.uk> writes:
GC> Which makes vfork() rather useless for spawning subprocesses. If
GC> you can guarantee that dup2() (or similar) will work, then
GC> vfork() may be of some use.
In Solaris, dup2 has always worked because the file table hangs of the
user structure of the process which is duplicated in the child.
(Some confusion seems to come from the fact that children that call
exit() instead of _exit() flush and close stdio FILE buffers...)
The bug that Solaris had until 2.6 was that the signal disposition
wasn't handled correctly because a lot of the signal junk is actually
contained within libc data area (dynamic) and thus part of the address
space. So, when a child diddled signal stuff, it actually wacked the
parents stuff. Again, this has been fixed since 2.6.