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!

È stato utile?

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
scroll top