В солярисе, как обнаружить сломанный сокет в вызове send ()? я не хочу использовать сигнал. я пробовал SO_NOSIGPIPE и MSG_NOSIGNAL, но оба не доступны в Solaris, и моя программа убивается из-за ошибки «сломанная труба».
Есть ли способ обнаружить сломанную трубу?
Спасибо!
Я думаю, в Solaris у вас есть только ограниченные возможности.AFAIK, sigaction, предложенный caf, кажется лучшим решением.
Вам придется использовать sigaction(), чтобы специально игнорировать сигнал SIGPIPE:
sigaction()
SIGPIPE
struct sigaction act; act.sa_handler = SIG_IGN; sigaction(SIGPIPE, &act, NULL);
... тогда send() вернет -1 с errno, установленным на EPIPE.
send()
errno
EPIPE