Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 |
В винде многое так делается ![]() |