Запуск обособленных дочерних процессов

Все же чаще приложение все-таки создает другие процессы как обособленные (detached processes) Это значит, что после создания и запуска нового процесса родительскому процессу нет нужды с ним взаимодействовать или ждать, пока тот закончит работу Именно так и действует Explorer: запускает для пользователя новые процессы, а дальше его уже не волнует, что там с ними происходит.

Чтобы обрубить все пуповины, связывающие Explorer c дочерним процессом, ему нужно (вызовом CloseHandle) закрыть свои описатели, связанные с новым процессом и его первичным потоком.

Приведенный ниже фрагмент кода демонстрирует, как, создав процесс, сделать его обособленным

PROCESS_INFORMATION pi; // Порождение дочернего процесса.BOOL fSuccess = CreateProcess(..., &pi);if (fSuccess) { // Разрешаем системе уничтожить объекты ядра поток и процесс дочернего //процесса сразу по его завершении CloseHandle(pi.hThread); CloseHandle(pi.hProcess);}

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: