2

复制当前进程以在 Windows 中生成另一个实例的最简单方法是什么?我知道 Linux 有fork(),但我只需要在同一个进程中再次运行 main,可能使用CreateProcess()正确的参数。

4

2 回答 2

1

正如@DavidHeffernan 评论的那样:

STARTUPINFO si;
::memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
PROCESS_INFORMATION pi;
::CreateProcess(NULL, ::GetCommandLine(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
于 2012-09-30T21:07:31.090 回答
0

Cygwinfork()在其托管环境中实施,但即便如此,在让孩子赶上父母以准确复制 POSIX 行为方面,这也是一场复杂的广场舞。

似乎您不需要模仿fork(),但是fork()/ exec()。为此,收集环境变量、程序参数并将它们传递给CreateProcess()应该就足够了。也有将文件描述符复制到孩子的选项。请参阅CreateProcess文档

于 2012-10-12T22:36:52.587 回答