Pour fermer ma socket, j'utilise la meme fonction pour le client et le serveur (j'ai fait une librairie multi systeme pour les socket avec les fonction de base, dont close(...) ). Pour le serveur la fonction en question ne me sort aucun segfault et se comporte tres bien, du coté client elle plante lamentablement.... ;)
normalement "planter" correspond à un appel mémoire incorrect (le kernel détruit ton processus car il a tenté d'accéder à un espace mémoire auquel il n'a pas accès). c'est rare que ce soit le cas avec les syscalls et impossible avec close(2). es-tu sûr que c'est sur l'appel de close ? si tu lances ton client à travers strace tu devrais voir quel est le dernier syscall avant le plantage, ça pourrat aider. si c'est un appel mémoire incorrect, lancer ton client à travers valgrind pourrait aussi grandement aider en indiquant des infos utiles de localisation du problème.
[^] # Re: socket serveur / client
Posté par gc . En réponse au message socket serveur / client. Évalué à 2.
normalement "planter" correspond à un appel mémoire incorrect (le kernel détruit ton processus car il a tenté d'accéder à un espace mémoire auquel il n'a pas accès). c'est rare que ce soit le cas avec les syscalls et impossible avec close(2). es-tu sûr que c'est sur l'appel de close ? si tu lances ton client à travers strace tu devrais voir quel est le dernier syscall avant le plantage, ça pourrat aider. si c'est un appel mémoire incorrect, lancer ton client à travers valgrind pourrait aussi grandement aider en indiquant des infos utiles de localisation du problème.