Detectando tubo quebrado em Solaris Send () Chamada
-
18-09-2019 - |
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!
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