Wie man SIGPIPE verhindert (oder richtig behandelt)

Ich habe ein kleines server-Programm, das akzeptiert verbindungen über eine TCP-oder lokalen UNIX-socket, liest einen einfachen Befehl und, je nach Befehl sendet eine Antwort. Das problem ist, dass der Kunde kein Interesse an der Antwort manchmal und beendet früh, so zu schreiben, dass die Buchse bewirkt, dass ein SIGPIPE und mein server crash. Was ist die best practice, um zu verhindern, dass der Absturz hier? Gibt es eine Möglichkeit zu überprüfen, ob die andere Seite der Zeile ist noch nicht zu Ende gelesen? (wählen Sie() scheint nicht zu funktionieren hier, wie Sie das immer sagt der socket schreibbar ist). Oder sollte ich einfach nur fangen die SIGPIPE mit einem handler und es ignorieren?

InformationsquelleAutor der Frage jkramer | 2008-09-20

Schreibe einen Kommentar