Перехват сигналов от процессов - PullRequest
1 голос
/ 26 марта 2012

Как мне поступить с захватом / перехватом сигналов, отправленных другому процессу из моего собственного процесса? Готовы использовать C, Ruby или любой другой пакет Linux.

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Вы можете написать библиотечную оболочку, которая заменит системные signal / sigaction вызовы для перехвата установки обработчика сигнала и установки ваших собственных обработчиков.Получив сигнал, вы сможете выполнить свою работу и позже вызвать обработчик пользователя.Используйте LD_PRELOAD , чтобы заменить системные signal / sigaction подпрограммами вашими.

1 голос
/ 26 марта 2012

Я думаю, что системный вызов ptrace(2) - это то, что вы хотите.Из руководства: «Во время отслеживания ребенок будет останавливаться при каждой доставке сигнала, даже если сигнал игнорируется. (Исключением является SIGKILL, который имеет свой обычный эффект.) Родитель будет уведомлен при следующем ожидании.(2) и может проверять и изменять дочерний процесс, пока он остановлен. Затем родительский процесс заставляет дочерний процесс продолжать работу, при необходимости игнорируя доставленный сигнал (или даже поставляя другой сигнал вместо этого). "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...