Такая проблема. Программа получает данные через COM-порт, и основное время проводит в состоянии ожидания этих данных (в системном вызове read). Нужно чтобы она корректно обрабатывала сигнал TERM (т. е. правильно завершала свою работу). Но простая установка сигнала не помогает - при получении SIGTERM программа просто завершает работу с сообщением "Terminated.", мой обработчик сигнала вообще не вызывается. Подозреваю что дело тут как раз в том что сигнал приходит во время ожидания в системном вызове - видимо libc ставит на это время какой-то свой обработчик. Как с этим можно бороться - чтобы всё-таки получить этот сигнал?