将fork-exec习惯用法移植到Windows

时间:2014-06-25 12:37:37

标签: linux cross-platform io-redirection child-process mingw-w64

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

是否有现有的包装器?

1 个答案:

答案 0 :(得分:0)

您是否考虑使用某些跨平台库,例如glibspawning process设施),Qt QProcessPocoboost process等等....?

然后你可以(原则上)编写在Windows和Linux上运行的源代码。

(您没有“移植”fork + exec到Windows,您只使用此类库提供的更高级别的构造来创建新进程。