Pregunta

En Solaris toma la forma de detectar roto en send () llamar? yo no quiero usar la señal.
He intentado SO_NOSIGPIPE y MSG_NOSIGNAL pero ambos no están disponibles en Solaris y mi programa está siendo asesinados con el error "tubería rota".

¿Hay alguna manera de detectar tubería rota?

Gracias!

¿Fue útil?

Solución

Vas a tener que utilizar sigaction() hacer caso omiso de la señal específica SIGPIPE:

struct sigaction act;

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

... entonces send() volverá -1 con errno establecido en EPIPE.

Otros consejos

supongo que en Solaris tiene opciones limitadas. Que yo sepa, sigaction sugerido por CAF parece ser la mejor solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top