Как дублировать текущий процесс?

Какой самый простой способ дублировать текущий процесс, чтобы вызвать другой экземпляр в Windows? Я знаю, что Linux имеет fork(), но все, что мне нужно, это снова запустить main в том же процессе, вероятно, используя CreateProcess() с правильными аргументами.

2

Решение

Как заметил @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

Другие решения

Cygwin реализует fork() в управляемой среде, но даже это сложный танец в квадрате, заставляющий ребенка догонять родителя, чтобы точно копировать поведение POSIX.

Кажется, вам не нужно подражать fork(), но fork()/exec(), Для этого нужно собрать переменные среды, параметры программы и передать их CreateProcess() должно быть достаточно. Есть варианты, чтобы скопировать файловые дескрипторы на ребенка тоже. Увидеть CreateProcess«s документация.

0

По вопросам рекламы [email protected]