Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли как то сделать пинг процесса ? Определить, что он завис. / 8 сообщений из 8, страница 1 из 1
07.11.2014, 12:11
    #38798334
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
Можно только теорию или список функция, или готовое решение.
...
Рейтинг: 0 / 0
07.11.2014, 12:58
    #38798412
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
Windows для этого использует SendMessageTimeout().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.11.2014, 13:25
    #38798467
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
Dimitry SibiryakovWindows для этого использует SendMessageTimeout().


а как hwnd получить по id процесса ?
...
Рейтинг: 0 / 0
07.11.2014, 13:32
    #38798483
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
gera3323Dimitry SibiryakovWindows для этого использует SendMessageTimeout().


а как hwnd получить по id процесса ?

Например, FindWindow.

Только учти, что далеко не у всех процессов есть окна.
Так что таким образом можно определить только работоспособность оконных приложений.

Работоспособность абстрактного процесса нельза вообще никак оценить.
...
Рейтинг: 0 / 0
07.11.2014, 13:35
    #38798489
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
gera3323а как hwnd получить по id процесса ?
EnumWindows() + GetWindowProcessThreadId().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.11.2014, 17:07
    #38798767
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
gera3323, имеется в виду процесс-приложение в Win32 (Wndproc) циклом?
...
Рейтинг: 0 / 0
07.11.2014, 19:06
    #38798933
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
gera3323Можно только теорию или список функция, или готовое решение.В общем случае: нельзя.

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

Без подобной подготовки определить что процесс завис можно пожалуй только опосредованно - если в течении некоего таймаута процесс не обращался ни к одной функции ОС, то можно предположить что что-то там произошло нехорошее. Но в то-же время процесс может и просто сидеть считать что-нибудь большое типа перемножения матриц...

SendMessageTimeout() это как раз пример "а не пингуют ли меня?". Эта функция кладет в очередь процесса сообщение и ждет пока процесс прочитает это сообщение. Если прочитал, значит главный цикл процесса (который в WndProc) еще работает.
Но и соответственно если у процесса нету WndProc - эта функция становится бесполезной.
...
Рейтинг: 0 / 0
07.11.2014, 21:32
    #38799043
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то сделать пинг процесса ? Определить, что он завис.
gera3323Можно только теорию или список функция, или готовое решение.
процесс "свой" (в котором что либо специфическое можно встроить ) или сторонний?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли как то сделать пинг процесса ? Определить, что он завис. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]