The Windows approach may be correct, but it suffers in performance from the POSIX perspective.
I have heard that WSL1 iimproves this.
Windows does not historically depend on fork(), so there was no native fork(), so Cygwin kludged it up.
Though actually iirc werfault uses NtCreateUserProcess() to clone processes when writing out crash dumps to this day