WinMain писал(а):Ещё есть семейство функций exec() и spawn() из стандартной библиоотеки С/С++, но они так же внутри себя реализуют вызов функции CreateProcess(). Их имеет смысл использовать в кросс-платформенных проектах для написания переносимого кода, т.к. они соответствуют стандарту POSIX.
Нормальный exec() 2 my mind вытесняет текущий процесс из памяти, а не запускает новый. На UNIX порождение нового процесса и загрузка программы - это две разные вещи. Процесс порождается при помощи fork(), при этом текущий процесс дублируется, потом грузится новая программа при помощи exec(), старая вытесняется из памяти.
Код: Выделить всё
pid_t pid;
if (pid = fork()) { /*If pid is not equal to 0 then we are child*/
exec("new program"); /* new program will replace child process */
}
В Windows эти две вещи склеены воедино в лице CreateProcess(), так что полноценного POSIX exec() в Win32 нету.