Называть процесс «не отвечающим» довольно субъективно. Это может быть ожидание данных, и оно может показаться не отвечающим, или оно может быть в (бесконечном) цикле и не отвечать на запросы.
Обычно люди реализуют hartbeat . То есть - в процессе есть очень маленький сокет-сервер, к которому другие процессы могут подключаться и отправлять ping
сообщений, на которые он отвечает pong
. Что обычно делают инструменты мониторинга, так это периодически проверяют процесс, и если он не отвечает в течение тайм-аута, он считается не отвечающим (и обычно его убивают).