Я столкнулся с проблемой в моей программе на сервере C ++. XML-запрос поступает из внешнего интерфейса (Java), а внутренний сервер (C ++) обрабатывает запрос и возвращает XML-ответ.
В рамках тестирования после отправки запроса на сервер мы убили сервер Tomcat. Внутреннему приложению (приложению с многопоточным сервером) после обработки запроса не удалось отправить ответ, поскольку сервер Tomcat не работает. Сервер завершил работу, выдав ошибку «получен необработанный сигнал [13] - [SIGPIPE]». Мы реализовали функции sigalrm и sigterm.
Вышеуказанная ошибка сигнала не фиксируется. Поможет ли реализация sigaction? Кроме того, как только сигнал получен, что нужно сделать, чтобы вернуться в основной цикл, где сервер прослушивает?
Edit:
Мы обнаружили, что функция send () имеет параметр MSG_NOSIGNAL. При передаче этого параметра функция отправки не будет выдавать сигнал SIGPIPE, если соединение разорвано.