Windows父进程和子进程创建



我想用c++在Windows中创建5个子进程。但我很困惑,CreateProcess要求lpApplicationName,而不像fork,我可以弄清楚我是孩子还是父母。

不幸的是,CreateProcess函数只能用于加载程序并为该程序启动新进程。

然而,你可以使用CreateProcess来模拟fork的功能,通过要求它加载你已经在运行的程序,然后要求它跳转到正确的位置。这就是Cygwin现在(或者至少曾经)所做的,正如这个旧答案所引用的。

在Windows中使用线程比使用多个进程更可取,因为Windows中的进程比UNIX中的进程要重得多。

然而,你可以通过传递你的应用程序的名称和路径给CreateProcess(如果你还不知道它,使用GetModuleFileName),并包括一个命令行参数来告诉你的应用程序,它是作为子进程启动的。

请记住,子进程将从头开始,它们不会像使用fork那样拥有父进程的内存副本。

最新更新