Обнаружение сломанной трубы в Solaris send () вызов
-
18-09-2019 - |
Вопрос
В Solaris Как обнаружить разбитый гнездо в вызове Send ()? Я не хочу использовать сигнал.
Я попробовал SO_NOSIGPIPE и MSG_NOSIGNAL, но оба не доступны в Solaris, и моя программа убивается с ошибкой "сломанной трубы".
Есть ли способ обнаружить сломанную трубу?
Спасибо!
Решение
Вам придется использовать sigaction()
специально игнорировать SIGPIPE
сигнал:
struct sigaction act;
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
...тогда send()
вернется -1 с errno
установлен в EPIPE
.
Другие советы
Я думаю, в Solaris у вас есть только ограниченные варианты. AFAIK, SigAction, предложенная CAF, представляется лучшим решением.
Не связан с StackOverflow