It appears that Larry McVoy <lm(a)mcvoy.com> said:
Perhaps a meaningless aside, but I agree on fork(). In
the last major
project I did, which was cross platform {windows,macos, all the major
Unices, Linux}, we adopted spawn() rather than fork/exec. There is no way
(that I know of) to fake fork() on Windows but it's easy to fake spawn().
The whole point of fork() is that it lets you get the effect of spawn with
a lot less internal mechanism. Spawn is equivalent to:
fork()
... do stuff to files and environment ...
exec()
By separating the fork and the exec, they didn't have to put all of
the stuff in the 12 paragraphs in the spawn() man page into the the
tiny PDP-11 kernel.
These days now that programs include multi-megabyte shared libraries
just for fun, I agree that the argument is less persuasive. On the
third hard, we now understand virtual memory and paging systems a lot
better so we don't need kludges like vfork().
R's,
John