At work we developed a tool once to run Linux programs on Windows, but it took a different approach. Basically it was an application that you could point at a Linux binary. It would allocate memory in the application's space, load the Linux binary in that, and start running it. It would trap attempts by the Linux application to do system calls and service them.<p>This was in the early 2000s. Using it, I was able to take most of the RPMs from whatever desktop version of Red Hat was current then and load them onto a Windows system, and most of them worked (assuming I had a Windows X server available). Bash, vim, and most of the usual command line tools worked, as did things like GIMP, major GUI email and web clients, and the like.<p>We tried a couple approaches to dealing with case sensitive vs case insensitive file systems. One was to just ignore it--that actually turned out to work quite well. In a normal Red Had desktop install, I think I only ran into one thing that had trouble and it was easy to work around (the two conflicting files turned out to have the same contents, and were read-only).<p>I don't remember how fork was implemented.<p>We looked at making this into a product, but we never found a good niche for it. Then, reviewing code that we got from some contractors we had outsources to for some of the implementation, I found that they had copied some from the Linux kernel (they were supposed to just use it for a reference if they needed to figure out what something did). Since other parts of it were written under the assumption that it would NOT be a GPLed product, and had used commercial code not compatible with GPL, that pretty much killed the chance we'd ever revive the thing.