Linux, обработка сигнала к потомку
У меня есть сервис для Linux, назовем его dispatcher, который запускает другие сервисы (service) и всячески их контролирует.
Одной из задач dispatcher является установка политики планировщика для каждого service (подобно man chrt), при этом, для реалтаймовых планировщиков: rr, fifo, нужно обрабатывать сигнал SIGXCPU, который посылается ядром, когда процесс service превысил допустимые лимиты на ресурсы (man prlimit). dispatcher должен тоже реагировать на этот сигнал и выполнять с проблемным service какое-либо действие.
Однако сервисы, через API dispatcher'а обрабатывают и другие сигналы.
Есть ли способ поймать этот сигнал, посланный к service в dispatcher? При этом не навредив логике обработки остальных сигналов?
Я читал про process groups, но это, кажется, не подходит, т.к services должны обрабатывать и другие сигналы.
Если и можно сделать это через process groups, то как мне фильтровать сигналы?
SIGXCPU должен обрабатывать dispatcher, а, например SIGTERM, SIGHUP должны оказываться для каждого service и для dispatcher уместными только для них самих, а не для всей группы процессов.