|
Я в этом не шарю
4 / 4 / 3
Регистрация: 03.09.2014
Сообщений: 191
|
|
Как завершить дочернее приложение если родительское было завершено?15.07.2015, 13:13. Показов 1390. Ответов 8
Метки нет (Все метки)
Ситуация такая.
Есть родительское приложение. Оно создаёт дочерний процесс, с которым общается через сокет. Иногда случается, что родительское приложение падает (проблемы разработки или просто сбои). Так вот нужно чтобы дочернее приложение завершалось автоматически, если родительское было завершено, но как такое проделать я не знаю. Просто сигналом из сокета об отсутствии соединеия ограничиться не получится, родительское может падать в следствии ошибки и тогда дочернее останется висеть в памяти без действий.
0
|
|
| 15.07.2015, 13:13 | |
|
Ответы с готовыми решениями:
8
Как блокировать родительское окно, пока открыто дочернее? Как догрузить до конца вначале дочернее окно, а потом родительское Распределить задачи по процессорам так, чтобы выполнение всех задач было завершено в кратчайший срок |
|
2 / 2 / 3
Регистрация: 07.10.2013
Сообщений: 48
|
|
| 16.07.2015, 14:02 | |
|
Я далеко не специалист, но решил бы так:
1. при создании дочернего процесса получаем его process id(pid) и убиваем дочерний процесс при завершении или 2. в обработчике сокета дочернего реагировал бы на специальный символ, при котором процесс самоубивается (или вызывается garbage collector принудительно). Насчет ошибок : я бы заключил все в блоки try...catch и при возникновении делал бы то, что описал вверху.
0
|
|
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|
| 16.07.2015, 15:18 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 17.07.2015, 12:04 | ||
|
но думаю, что такой сценарий может прокатить: родитель при создании ребенка может сообщить ему свой хэндл. ребенок фиксит, что родитель долго не отвечает, пробивает хэндл. через него он узнает статус родителя. и если процесс - мертв, то самоликвидируется.
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
||
| 17.07.2015, 13:24 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 17.07.2015, 14:05 | ||
|
и теперь пока он его не отпустит, система никому такой же не отдаст.
0
|
||
|
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
|
|||
| 17.07.2015, 15:07 | |||
|
Я все еще не пойму задумки.
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 17.07.2015, 17:27 | ||
|
при создании процесса, в системе создается некий объект ядра. когда процесс помирает, этот объект ядра ещё какое то время существует. чуть позже, система его подчищает за ненадобностью. если у вашего процесса достаточно прав, то вы можете заполучить к себе хэндл чужого процесса. например, с помощью функции ::OpenProcess в этом случае получится, что на один и тот же объект ядра ссылаются два открытых хэндла, из двух разных процессов. и теперь, пока оба эти хэндла не будут закрыты, объект ядра будет существовать, даже если породивший его родительский процесс подохнет. тобишь, родительского процесса уже давно нет в живых. но объект ядра ассоциированный с ним остается жить, пока существует хотя бы один открытый хэндл, который на него ссылается. по этому хэндлу, ребенок сможет пробить информацию о состоянии объекта ядра. и узнать: жив ли ещё родительский процесс, или канул в лету.
1
|
||
|
Ушел с форума
|
||||
| 17.07.2015, 18:06 | ||||
|
Создаете job-объект, задаете для него параметры через SetInformationJobObject + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE, далее помещаете дочерний процесс в job. Хэндл job-объекта закрывать не нужно. Когда родительский процесс завершится, вместе с ним система прибъет и все дочерние, являющиеся частью job-а. Еще до создания дочернего процесса родительский может открыть себя с параметрами bInheritHandle = TRUE в SECURITY_ATTRIBUTES и тогда дочерний процесс автоматически унаследует хэндл родителя (при условии, что CreateProcess вызывается с bInheritHandles = TRUE). А пока существует хотя бы один хэндл процесса, система не выдаст его ID кому-то другому: PROCESS_INFORMATION structure https://msdn.microsoft.com/en-... 85%29.aspx
3
|
||||
| 17.07.2015, 18:06 | |
|
Помогаю со студенческими работами здесь
9
Как понять, что дочернее приложение - снято? Вывести позиц Коды символа нажатой клавиши, если не было взаимодействия с мышью, а если было - то не выводить Приложение падает, если было запущено при автозапуске системы Сообщение "Восстановление системы не было успешно завершено" Как сделать прозрачным окно, если оно - дочернее Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|