2 votes

Linux SIGPIPE fait planter le serveur

Au début de mon application, j'appelle donc

signal(SIGPIPE, SIG_IGN);

ce qui, je le pensais, permettrait à mon application d'ignorer SIGPIPE. Cependant, j'ai toujours obtenu un crash SIGPIPE avec le code suivant :

write(fd, outgoingStr->c_str(), size);

où fd est un int (descripteur de fichier) et size est la taille de la chaîne. Qu'est-ce qui ne va pas ici ?

Par ailleurs, j'ai récemment utilisé cette écriture dans un if pour vérifier si une valeur d'erreur était renvoyée et je crois que je n'ai jamais eu de plantage de SIGPIPE jusqu'à ce que cela soit supprimé. La vérification du if ne faisait rien d'autre que d'envoyer du cout à la console s'il y avait une erreur, donc je ne suis pas sûr que ce soit pertinent ou non.

2voto

Josh Brittain Points 1932

Le problème est que GDB s'arrête sur SIGPIPE même s'il est ignoré. Lorsque l'application est exécutée normalement, elle fonctionne comme prévu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X