windowslinuxposixforkinterix

Does Interix implement fork()?


On Unix to Windows Porting Dictionary for HPC page for fork() it's written

There is no equivalent Windows API to the Unix fork() or vfork(). The Microsoft Subsystem for Unix-based Applications (SUA or Interix) is a Unix environment that has fork() and vfork() properly implemented.

and further on the page there's example source code which uses... standard Win32 API CreateProcess function.

I'm confused.
Shouldn't the example use fork() to illustrate the statement about fork() being implemented by SUA/Interix?
If fork() is really implemented which header and lib files does it live in?


Solution

  • The page you're looking at is the *nix to Windows porting guide. It doesn't show you how to use fork() but the closest win32 equivialent, CreateProcess. The pages there documents which Win32 function you should use instead of Unix functions.

    You'll need the subsystem for Unix and the SUA SDK to use fork(). There you'll get a *nix environment on Windows, fork() will be in the usual unistd.h library, and you'll link to libc.so (using gcc) to use it.