如何复制当前进程?

时间:2012-09-30 19:31:12

标签: c++ windows fork duplication

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

Cygwin implements fork()在其管理环境中,但即使这是一个错综复杂的方形舞蹈,让孩子赶上父母准确复制POSIX行为。

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