MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Запуск exe отдельно от родительского процесса"
Answer 1006196
Флаг
DETACHED_PROCESS
означает лишь одно - что создаваемый процесс будет иметь отдельную консоль. Если процесс не консольный, он не будет иметь вообще никакого эффекта. Windows все равно пометит, что процесс был создан вашей программой. Утилиты, которые строят дерево процессов на основе информации, возвращаемой функциями Tool Help APIProcess32First
/Process32Next
в полеth32ParentProcessID
структуры PROCESSENTRY32 будут считать его дочерним. Если пользователь нажмет в диспетчере задач для вашей программы "Завершить дерево процессов", созданный процесс будет также завершен. С этим не надо бороться, это сделано специально, чтобы в ситуациях, когда программа из-за бага плодит много процессов без видимых окон и зависает, можно было решить проблему и завершить все эти процессы.Тем не менее, создать полностью независимый процесс, который не завершается по нажатии "Завершить дерево процессов", возможно. Для этого можно использовать, например,
system("start notepad.exe");
. Команда start запускает notepad и сразу возвращает управление, командный интерпретатор закрывается. Тогда в дереве процессов с точки зрения Windows родительским процессом notepad.exe будет уже не существующий процесс командного интерпретатора; соответственно, дерево разорвано и связи с вашей программой нет.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.