Détection tuyau cassé en envoyer Solaris () appel
-
18-09-2019 - |
Question
Dans solaris comment détecter la prise cassée dans send () appeler? Je ne veux pas utiliser le signal.
J'ai essayé SO_NOSIGPIPE et MSG_NOSIGNAL, mais les deux ne sont pas disponibles dans Solaris et mon programme se font tuer avec l'erreur « broken pipe ».
Est-il possible de détecter tuyau cassé?
Merci!
La solution
Vous devez utiliser sigaction()
ignorer spécifiquement le signal SIGPIPE
:
struct sigaction act;
act.sa_handler = SIG_IGN;
sigaction(SIGPIPE, &act, NULL);
... puis send()
retournera -1 avec errno
réglé sur EPIPE
.
Autres conseils
Je suppose que Solaris vous avez des options limitées que. Autant que je sache, sigaction suggéré par semble café la meilleure solution.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow