Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment contrer le broken pipe du write()

5 réponses
Avatar
Delf
Bonjour.

J'ai une application serveur qui envoie des données à des clients. Si un
client 'arrive' et 'part' avant le write(), l'application plante sur un
'broken pipe'.

int ret = write(m_SocketDescriptor, &str, 128);

Y a-t-il un moyen d'eviter cela ?

Merci.

--
Delf
Do not use this email in Cc!
Tant que l'homme sera mortel, il ne sera jamais décontracté.

5 réponses

Avatar
Delf
Delf wrote:

Y a-t-il un moyen d'eviter cela ?


Oui et ouf:

signal(SIGPIPE, SIG_IGN);

--
Delf
Do not use this email in Cc!
L'homme n'est que poussière. La femme est aspirateur.

Avatar
lhabert
Delf :

signal(SIGPIPE, SIG_IGN);


Je précise au cas où tu ne serais pas au courant : « signal » a une
sémantique variable d'un OS à l'autre, en particulier au niveau de la
one-shotness. Il vaut mieux utiliser sigaction.

Avatar
Delf
Luc Habert wrote:

Je précise au cas où tu ne serais pas au courant : « signal » a une
sémantique variable d'un OS à l'autre, en particulier au niveau de la
one-shotness. Il vaut mieux utiliser sigaction.


Ah non, je ne savais pas :| Un truc à regarder de près, merci.

--
Delf
Do not use this email in Cc!
Quand je vais aux chiottes, je prends un manuel CISCO.

Avatar
Stephane Chazelas
On Sun, 30 Apr 2006 19:17:50 +0000 (UTC), Luc Habert wrote:
Delf :

signal(SIGPIPE, SIG_IGN);


Je précise au cas où tu ne serais pas au courant : « signal » a une
sémantique variable d'un OS à l'autre, en particulier au niveau de la
one-shotness. Il vaut mieux utiliser sigaction.


Pas pour SIG_IGN, quand meme, si?

--
Stephane


Avatar
Eric Levenez
Le 1/05/06 9:11, dans ,
« Stephane Chazelas » a écrit :

On Sun, 30 Apr 2006 19:17:50 +0000 (UTC), Luc Habert wrote:
Delf :

signal(SIGPIPE, SIG_IGN);


Je précise au cas où tu ne serais pas au courant : « signal » a une
sémantique variable d'un OS à l'autre, en particulier au niveau de la
one-shotness. Il vaut mieux utiliser sigaction.


Pas pour SIG_IGN, quand meme, si?


Non bien sûr, un SIG_IGN sert à ignorer tous les signaux, et pas juste le
premier. Aucun problème donc à utiliser signal dans ce cas.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.