У нас есть небольшое приложение для демона, написанное на C для нескольких различных платформ UNIX (эта проблема происходит в SunOS 5.10), которая в основном просто открывает последовательный порт, а затем прослушивает информацию, поступающую через сказал порт.Приложение, получающее таинственные SIGINTs
В данном конкретном случае демон, кажется, считывает одну передачу (например, данные о файле), отправленную через последовательный порт, затем получает SIGINT. Это происходит каждый раз. Другие клиенты используют эту настройку очень точно, не получая SIGINT. Совершенно очевидно, что пользователи НЕ нажимают Ctrl-C. У нас есть относительно простой обработчик сигналов, поэтому мы точно знаем, что это то, что происходит.
Что еще может быть причиной этого? Гуглинг и рассмотрение вопросов здесь, я не мог найти много объяснений по поводу других вещей, которые могут вызвать SIGINT. Я также просмотрел код и не нашел вызовов для рейза() и только один вызов для kill (pid, 0), который в любом случае не отправил SIGINT.
Любые мысли или прозрения определенно будут оценены.
Отладка не содержит никаких намеков? Что говорит вам gdb? –
Не отлаживали это место на месте, так как это нетривиальное мероприятие. – Morinar