I've done this exact thing before too in long public software, and yes it works. I think the hot take at the end that this is bad is overly negative. This is what those Windows APIs are for.
Where are the CHICKEN Pages in Userspace? ( Sorry, this is a good article with EXCELLENT Graphics. What is not to love about The Far Side, and The secret cow level? )
There's a simpler way to implement COW in userspace: memory map a file. :) All separate maps to the same file share their mapping tables in a COW fashion.