Linux, обработка сигнала к потомку

Рейтинг: 0Ответов: 0Опубликовано: 07.04.2023

У меня есть сервис для 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 уместными только для них самих, а не для всей группы процессов.

Ответы

Ответов пока нет.