Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何复制当前流程?_C++_Windows_Fork_Duplication - Fatal编程技术网

C++ 如何复制当前流程?

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

复制当前进程、在Windows中生成另一个实例的最简单方法是什么?我知道Linux有
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