Re: Windows. отслеживать службой работоспособность приложений
От: klopodav  
Дата: 20.06.23 10:53
Оценка: +1
D>посоветуйте пожалуйста способ, быстрый, надежный, простой — как отслеживать состояние работы приложения? по cpu не вариант. через windows pipe пробовал делать опрос, но работает как-то ненадежно, не всегда получается вообще этот pipe организовать, особенно если уже был ранее вход-выход пользователя... куда то писать в реестр каждому приложению что-то? или файлово как то сделать? или может еще есть какой способ? служба запущена с правами SYSTEM, каждое приложение — пользовательские права, чаще всего не админские.

Ну, можно сделать какой-нибудь банальный и кондовый вариант типа heartbeat. Пусть каждое приложение через определенные промежутки времени пишет свой файл и перезаписывает в нем какую-то инфу — ну хотя бы дату-время. Если инфа долго не обновляется — значит, зависло. Если на зависание надо реагировать быстро — такой вариант не очень хорош, если же таких требований нет — то вполне норм.

Тут могут быть небольшие проблемы, но они в принципе решаемые. Если работа приложения асинхронная и многопоточная — может оказаться, что приложение живо, но самый важный рабочий поток висит.
Но можно и каждому потоку назначить свой отдельный файл. Если же приложение однопоточное — может оказаться, что какая-то функция работает долго, и приложение как будто висит. Но тогда надо обновлять файл в цикле внутри этой тяжелой функции. Еще могут быть длительные запросы, которые не отслеживаются напрямую изнутри самого приложения — например, если оно обращается к базе, долбится в сеть и т.п. В этих случаях методы отслеживания прогресса таких длительных запросов надо уже подбирать индивидуально.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.