Tesla4o
@Tesla4o
Без пользы жизнь - безвременная смерть... В. Гете

Как создать независимый процесс?

Не получается создать независимый процесс двойник методами WinApi.
Использую метод CreateProcess(...) при этом запускается новый процесс но если его закрыть то закрывается и родитель.
А нужно что бы состояние не влияло друг на друга
Вот код:
int main() {
    int a;
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory(&si, sizeof(si));
    si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));

    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE;

    char szFileName[FILENAME_MAX];
    szFileName[0] = '\0';

    GetModuleFileName(NULL, szFileName, FILENAME_MAX);

    std::cout << "enter - ";
    std::cin >> a;
    if (a == 1) {
        CreateProcess(szFileName, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);

        WaitForSingleObject(pi.hProcess, INFINITE);

        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    } else
        std::cout << "Shh";

    return 0;
}
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
if (a == 1) {
        CreateProcess(szFileName, NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
        WaitForSingleObject(pi.hProcess, INFINITE);
        ...
    }
    ...
    return 0;

запускается новый процесс но если его закрыть то закрывается и родитель.

Ну так ты ровно это и написал: родитель запускает процесс и ждёт его завершения, а после этого завершается сам. Хочешь другого поведения -- пиши другое поведение.
Ответ написан
IGHOR
@IGHOR
Qt/C++ DEV/CTO
Надо использовать ShellExecute вместо CreateProcess
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Золотое Яблоко Екатеринбург
До 70 000 ₽
MSP360 Санкт-Петербург
от 60 000 до 80 000 ₽
MSP360 Санкт-Петербург
от 70 000 до 110 000 ₽