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

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

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

7 ответов

21 просмотр

Вочдог по ipc?

Александр-Toon Автор вопроса
Oleksandr
Вочдог по ipc?

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

Александр-Toon Автор вопроса
Oleksandr
Ещё погугли heartbeat

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

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

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

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

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

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
9
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта