Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Дочерний процесс


Автор: Delvish 18.9.2021, 01:10
всем привет!) заглох что-то форум, а жаль... но ладно, без лишней лирики вопрос, вдруг кто знает:
запуская дочерний процесс через CreateProcess или же ShellExecute наше приложение остаётся родителем для дочернего процесса. и если убить родителя с принуждением завершения дочерних процессов, все порождённые тут же закроются. но я никак не могу разгадать как перестать быть родителем - что-то вроде зомби-процесса в Linux - как отказаться от дочерних при их запуске чтобы обезопасить их завершение в случае завершения родителя. вроде решение где-то на поверхности, но вот в упор не помню. для интересующихся суть задачи: есть ребёнок в пубертатном периоде, есть приложение для контроля времени использования ПК (игр); есть приложение, следящее за актуальностью версий контроллера-блокировщика, а так же за тем, чтобы он не был завершён через Диспетчер задач. пытаюсь понять как отвязать основное приложение от блокировщика. в случае завершения работы блокировщика - основное его перезапускает. но вот в случае завершения работы основного - блокировщик помирает и детёныш (человечий) сидит часами за компом без контроля.

Автор: _zorn_ 18.9.2021, 15:12
Всегда есть тот кто породил процесс. В упомянутом вами линуксе есть init 1 (привет мистер робот).
Так устроен мир.

Автор: Delvish 18.9.2021, 16:10
да, согласен, когда родитель теряется, init "забирает" на себя руководство процессом - я не совсем корректно упомянул. в Windows нет механизма чтобы отказаться от родителя - как-то переопределить родителя, на, скажем System (PID 4)?
единственный вариант решения моей задачи, получается, это сделать третий процесс и чтобы все три друг за другом следили. идиотизм, конечно, но не вижу других вариантов, а с сервисами заморачиваться не хочется - слишком много там подводных камней с определением рабочего стола пользователя и прочим.

Автор: _zorn_ 22.9.2021, 16:58
Цитата(Delvish @  18.9.2021,  23:10 Найти цитируемый пост)
идиотизм, конечно, но не вижу других вариантов

В винде многое так делается  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)