fork()
是一个讨厌的libc函数,可以在Win32上实现。幸运的是,Win32 CreateProcess()
非常接近fork()
,后跟exec()
。
现在似乎Linux上有很多不同的系统调用用于进程生成。
问题是:如何使fork + exec可移植并在Windows上使用CreateProcess()?
所以在Unix上它会做这样的事情(当然是交叉chroot
/ chdir
):
https://github.com/mindcat/pacman/blob/master/lib/libalpm/util.c#L529
在Windows上,它可以做到这样:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682499%28v=vs.85%29.aspx
是否有现有的包装器?
答案 0 :(得分:0)
您是否考虑使用某些跨平台库,例如glib(spawning process设施),Qt QProcess,Poco,boost process等等....?
然后你可以(原则上)编写在Windows和Linux上运行的源代码。
(您没有“移植”fork
+ exec
到Windows,您只使用此类库提供的更高级别的构造来创建新进程。