J'ai une application client-serveur où chaque partie communique avec l'autre via un socket TCP.
J'établis correctement la connexion, puis je fais planter le serveur AVANT que le client n'écrive des données sur le socket.
Ce que je vois, c'est que le premier write()
(côté client) est réussie et renvoie le nombre réel d'octets écrits, tandis que les suivantes renvoient (comme je m'y attendais) -1
(recevant un SIGPIPE
) et errno=EPIPE
.
Pourquoi le premier write()
réussit même si le socket est déjà fermé ?
EDIT Parfois aussi les éléments suivants write()
ont une valeur de retour positive, comme si tout se passait bien.