Вопрос

В 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, представляется лучшим решением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top