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