So verhindern Sie SIGPIPEs (oder behandeln Sie sie richtig)

Ich habe ein kleines Serverprogramm, das Verbindungen über einen TCP- oder lokalen UNIX-Socket akzeptiert, einen einfachen Befehl liest und je nach Befehl eine Antwort sendet. Das Problem ist, dass der Client manchmal kein Interesse an der Antwort hat und vorzeitig beendet wird. Wenn Sie also auf diesen Socket schreiben, wird ein SIGPIPE ausgelöst und mein Server stürzt ab. Was ist die beste Vorgehensweise, um den Absturz hier zu verhindern? Gibt es eine Möglichkeit zu überprüfen, ob die andere Seite der Zeile noch liest? (select () scheint hier nicht zu funktionieren, da immer angegeben wird, dass der Socket beschreibbar ist). Oder soll ich die SIGPIPE einfach mit einem Handler fangen und ignorieren?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage