> Just as a programming course
would not today begin with goto, we suggest teaching either
posix_spawn() or CreateProcess(), and then introducing
fork as a special case with its historic context (ยง2).
Or CreateProcess(), which has a lot to do with microsoft.
It really doesn't. Microsoft employs a guy named Dave Cutler who is credited with leading the development of Windows NT in the late 80s/early 90s. They hired him from DEC, where he... is credited with co-leading a research project that later became VMS. If you go look at OpenVMS programming manuals, you will see process creation calls (e.g. SYS$CREPRC, LIB$SPAWN) that look and behave a lot like CreateProcess().
I think it's well-known that Windows NT took a lot of ideas from VMS.
I don't think we should ever forget how MS behaved through the mid 2000s. But we don't live in that world anymore, they aren't (capable of being) that company anymore, and I think we're at a point where dismissing research because of a connection to MS is not protecting anyone from anything.
"Rich Felker, May 24, 2015:
Some interesting preliminary timing of
@musllibc
's posix_spawn vs fork+exec shows it ~25x faster for large parent processes. (~360us vs 9ms). #glibc has a vfork-based posix_spawn but it's only usable for trivial cases; others use fork.
@musllibc
posix_spawn always uses CLONE_VM. This also means
@musllibc
posix_spawn will fill the fork gap on NOMMU systems cleanly/safely (unlike vfork) once we get NOMMU working."
Or CreateProcess(), which has a lot to do with microsoft.