La detección de tubería rota en Solaris send () llamada
-
18-09-2019 - |
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!
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