Я тестировал один и тот же тест-код (сервер-клиент) на двух системах. В одном я получаю SIGPIPE, в другом я не получаю SIGPIPE.
Сценарий тестирования выглядит примерно так:
Клиент
- Подключение к серверу
- Получение данных с сервера
- Отправка данных
- Закрыть розетку
Сервер
- Принять соединение с сервера
- Отправка данных клиенту
- Получение данных
- Отправка данных
- Закрыть розетку
В одной системе (клиент и сервер работают в одной системе) SIGPIPE происходит случайным образом на стороне клиента или сервера.
Но в другой системе эта проблема не возникает с тем же тестовым кодом.
Интересно, как-то связана неисправная труба с настройками TCP.