C++ 如何复制当前流程?
复制当前进程、在Windows中生成另一个实例的最简单方法是什么?我知道Linux有C++ 如何复制当前流程?,c++,windows,fork,duplication,C++,Windows,Fork,Duplication,复制当前进程、在Windows中生成另一个实例的最简单方法是什么?我知道Linux有fork(),但我只需要在同一进程中再次运行main,可能需要使用带有正确参数的CreateProcess()。正如@DavidHeffernan所评论的: STARTUPINFO si; ::memset(&si, 0, sizeof(si)); si.cb = sizeof(si); PROCESS_INFORMATION pi; ::CreateProcess(NULL, ::GetCommandL
fork()
,但我只需要在同一进程中再次运行main,可能需要使用带有正确参数的CreateProcess()
。正如@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);
在其管理的环境中,但即使是这样,在让孩子赶上父母以准确复制POSIX行为方面也是一个复杂的方块舞
似乎您不需要模拟
fork()
,而是fork()
/exec()
。为此,收集环境变量和程序参数并将它们传递给CreateProcess()
就足够了。也可以选择将文件描述符复制到子级。请参见CreateProcess
。系统(argv[0])
?:D(如果我的意图正确。)如果我从WinMain
运行会怎么样?我可以简单地拆分lpCmdLine
并运行system
,还是需要在控制台子系统中?不,我意识到它不会工作,因为我不希望出现任何控制台窗口。调用GetCommandLine
并将其传递给CreateProcess