vérifiez toutes les sockets ouverts dans le système d'exploitation linux

Mon programme ouvre un socket avec cette fonction:

sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)

Après l'arrivée de l'envoi de données de la socket est fermée:

proche(sockfd);

Mais le problème est lorsque le programme ne fonctionne pas bien et c'est le blocage. Ainsi, la prise ne sera pas fermé.

Comment puis-je vérifier que tous les connecteurs ouvert sous le système d'exploitation Linux ?

Demander une liste de ouvert "fichiers" lsof
Si vous avez besoin de traiter dans le code, vous devez maintenir une liste de bonnes prises et à proximité en cas de besoin.
peu hors sujet, Vous devez vérifier la valeur de socketfd(renvoyée à partir de socket) pour une meilleure gestion des erreurs.
oui, le numéro de socket est le même à chaque fois que la socket est créé !
Si un processus se termine, tous ses descripteurs de fichiers sont fermés (par le noyau).

OriginalL'auteur stack_A | 2013-07-08