Frage

In Solaris wie kann man gebrochene Socket in send () call erfassen? Ich möchte kein Signal verwenden.
Ich habe so_nosigpipe und msg_nosignal ausprobiert, aber beide sind in Solaris nicht verfügbar und mein Programm wird mit "Broken Pipe" -Fehler getötet.

Gibt es eine Möglichkeit, gebrochenes Rohr zu erkennen?

Vielen Dank!

War es hilfreich?

Lösung

Sie müssen verwenden sigaction() speziell ignorieren die SIGPIPE Signal:

struct sigaction act;

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

...dann send() wird -1 mit zurückkehren mit errno einstellen EPIPE.

Andere Tipps

Ich denke, in Solaris haben Sie nur begrenzte Optionen. Afaik, Sigaction, vorgeschlagen von CAF, scheint die beste Lösung zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top