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