在Windows中复制当前进程、生成另一个实例的最简单方法是什么?我知道Linux有fork(),但我所需要的就是在同一进程中再次运行main,可能会使用带有正确参数的CreateProcess()。
发布于 2012-10-01 05:07:31
正如@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-10-13 06:36:53
Cygwin implements fork()在其托管环境中,但即使这样也是一个错综复杂的广场舞,让子进程赶上父进程,以准确地复制POSIX行为。
看起来您不需要模拟fork(),但需要模拟fork()/exec()。为此,收集环境变量、程序参数并将它们传递给CreateProcess()就足够了。还有一些选项可以将文件描述符复制到子级。请参阅CreateProcess的documentation。
https://stackoverflow.com/questions/12664360
复制相似问题