185 похожих чатов

Подскажите, может есть какая нибудь литература по вопросу. у меня

есть сгенерированная программа, допустим это файл exe. я ее запускаю в отдельном процессе. программа генерируется в райнтайме, и у меня нет возможности проверить, есть ли в ней бесконечные циклы, переполнение стэка и тд. вопрос, мне необходимо периодически общаться с этим процессом, как детектить ситуации когда процесс уже скорее "мертв чем жив"?

7 ответов

9 просмотров

Вочдог по ipc?

Tiny-Toon Автор вопроса
Oleksandr
Вочдог по ipc?

погуглить про watchdog inter process communication? з.ы. таким ни разу не пользовался, почитаю

Tiny-Toon Автор вопроса
Oleksandr
Ещё погугли heartbeat

нечто похожее нашел у CICS IPIC, там пара сообщений с периодом в 10 сек отправляется (считай та же самая идея с периодическим пингом)

Tiny Toon
нечто похожее нашел у CICS IPIC, там пара сообщени...

Я сам подобные системы не делал, только читал про них при подготовке к собесам. Но тут у меня сразу пара идей: 1. Твоя программа периодически пишет что-то в лог-файл с таймстемпом. Сторонний сервис периодически проверяет этот файл. Если последний лог был достаточно давно - значит программа зависла или упала. 2. То же самое, но программа напрямую шлёт сообщения стороннему сервису по ipc. 3. Сторонний сервис пингует твою программу. Твоя программа крутится в ивент-лупе и периодически проверяет пинг запросы, отсылает ответы. Если она по каким-то причинам не может переключиться в ивент-луп и ответить на пинг - она зависла. Тут правда я хз как лучше реализовать ивент-луп и основной поток программы (так чтобы тред ивент-лупа не включался просто так, даже если основной завис). Возможно лучше такое сделать на ручном переключении тредов. Либо реализовать вочдог для тредов внутри твоего процесса

Tiny-Toon Автор вопроса
Oleksandr
Я сам подобные системы не делал, только читал про ...

проблема всех методов в том что процесс может пинговаться, только вот исполняет он например бесконечный цикл. в итоге процесс как бы работает, но с другой стороны он уже бесполезен. можно конечно в пинге какую нибудь информацию попробовать собирать о call stack'e, и эвристически обрабатывать такие ситуации

Tiny Toon
проблема всех методов в том что процесс может пинг...

Если процесс "пингуется" в теле бесконечного цикла, то да, такой механизм бесполезен. Но другого решения я не вижу. Пингуйте вне/после цикла.

Похожие вопросы

Обсуждают сегодня

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
🥹сениоры нужна помощь. Столкнулся с интересным. Сайт на 1.4 весь в вирусах. Просканировал почистил вроде. Можно конечно скачать развернуть на опенсервере, но пока пробую на ко...
Alexander Grishin 👽
3
Карта сайта