Pergunta

Em Solaris, como detectar o soquete quebrado na chamada send ()? Eu não quero usar o sinal.
Eu tentei SO_NOSIGPIPE e MSG_NOSIGNAL, mas ambos não estão disponíveis no Solaris e meu programa está sendo morto com o erro "Pipe quebrado".

Existe alguma maneira de detectar tubo quebrado?

Obrigado!

Foi útil?

Solução

Você terá que usar sigaction() para ignorar especificamente o SIGPIPE sinal:

struct sigaction act;

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

...então send() retornará -1 com errno definido como EPIPE.

Outras dicas

Eu acho que em Solaris você tem apenas opções limitadas. Afaik, Sigaction sugerido pelo CAF parece ser a melhor solução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top