

The article mentions “GNU getopt” but as far as I know GNU doesn’t have a getopt
utility; the version on most Linux OSes comes from util-linux. (Perhaps the author is confusing it with the C function with the same name.)
Note that other getopt
implementations have different features and some are simply broken. For example, BSD getopt
doesn’t support long options and comes with this known bug:
Arguments containing whitespace or embedded shell metacharacters generally will not survive intact; this looks easy to fix but isn’t.
For cross-platform scripts it’s probably best to use the getopts
shell builtin instead, the downside being it only supports fairly basic (POSIX) syntax even on Bash.
It doesn’t launch the new binary at all. When the current process wants to create a new process, instead of doing fork+exec (which launches the new binary and wreaks havoc because versions now don’t match), it simply tells the ForkServer (a different process running the old binary) to fork (split) itself.
Chromium also does this; they call their equivalent to ForkServer the zygote process and this article explains it really well.