Rilevare tubo rotto in Solaris send () chiamata
-
18-09-2019 - |
Domanda
In Solaris come rilevare presa rotto in send () chiamare? Non voglio utilizzare il segnale.
ho provato SO_NOSIGPIPE e MSG_NOSIGNAL ma entrambi non sono disponibili in Solaris e il mio programma sta ottenendo ucciso con l'errore "tubo rotto".
C'è un modo per rilevare tubo rotto?
Grazie!
Soluzione
Dovrete usare sigaction()
per ignorare il segnale specifico SIGPIPE
:
struct sigaction act;
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
... allora send()
tornerà -1 con errno
impostato EPIPE
.
Altri suggerimenti
Credo che in Solaris avete opzioni solo limitate. Per quanto ne so, sigaction suggerito da CAF sembra essere la soluzione migliore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow