如何在Windows中启动子进程?

7
在POSIX中,有fork()函数来创建子进程。我该如何在Windows中实现fork()的功能?

4
你想知道什么?如何在Windows上创建线程编程? - Mithrandir
据我所知,您可以使用 _spawn()、_beginthread() 和 _endthread()。 - Mithrandir
1
可能是我有点笨,或者你提问的方式很独特...不管怎样,这里有CreateProcess()函数:http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms682425(v=vs.85).aspx - Mithrandir
1
相关讨论:http://www.gamedev.net/topic/360290-fork-on-windows/ - Liran Orevi
也许 process.h 中的 _spawn* 函数就足够了:https://dev59.com/g3NA5IYBdhLWcg3wYMt-#46236161 - solstice333
显示剩余3条评论
1个回答

10

fork() 在 Windows 上没有直接的等价物。

CreateProcess() 是用于创建新进程的本地函数(但是,语义与 fork() 有所不同)。

换句话说,在 Unix 上,一个进程可以轻松地创建自己的克隆。在 Windows 上没有便宜的方法可以这样做。

如果您不关心 fork() 的克隆方面,则 CreateProcess() 应该可以胜任。


但是,CreateProcess() 和 fork() 之间有什么不同呢? - Mr.Tu
5
fork()创建的新进程会继承父进程的状态,包括变量的值和当前指令指针。CreateProcess()创建的新进程则不会继承,而是从头开始执行。此外,fork()只能创建正在运行的可执行文件的副本,而CreateProcess()可以启动任何可执行文件。 - Harry Johnston

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接