Обнаружение сломанной трубы в вызове Solaris send () - PullRequest
1 голос
/ 05 февраля 2010

В солярисе, как обнаружить сломанный сокет в вызове send ()? я не хочу использовать сигнал.
я пробовал SO_NOSIGPIPE и MSG_NOSIGNAL, но оба не доступны в Solaris, и моя программа убивается из-за ошибки «сломанная труба».

Есть ли способ обнаружить сломанную трубу?

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 февраля 2010

Я думаю, в Solaris у вас есть только ограниченные возможности.AFAIK, sigaction, предложенный caf, кажется лучшим решением.

1 голос
/ 05 февраля 2010

Вам придется использовать sigaction(), чтобы специально игнорировать сигнал SIGPIPE:

struct sigaction act;

act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);

... тогда send() вернет -1 с errno, установленным на EPIPE.

...