Bonsoir.
Bien sur, tout processus dispose d'un id(soit pid), et il est possible de le tuer en trouvant le nom de ton processus fantôme.
ps aux | grep -i "ton_serveur"
ps affiche la liste des processus, et "aux" sont ses arguments.
| est un pipe qui envoie les résultat à la commande suivante
grep -i "ton_serveur" va matcher/garder les ligne qui contiennent "ton_serveur" sans respecter la casse.
Au final soit tu as la ligne direct de ton processus avec son pid, que tu peux tuer :
kill "pid trouvé"
Sinon tu peux le tuer avec son nom directement :
killall "ton_serveur"
Au pire tu le tue grâce au chemin de ton binaire :
fuser -k /chemin/vers/serveur
Tu peux afficher la liste des connections actives grâce à netstat, ca te permettra de voir si il y a encore des connections.
netstat -antu
(paquets tcp et udp affichés)
Je te laisse le soin de rechercher à quoi correspondre précisemment ces commandes, et de trouver un petit guide de survie sous linux.
Finalement je dirais que ton application est mal concu, vérifie le multithread, essayes de mettre en place des exceptions handling, et debug le au pire, gdb, ptrace, objdump...
Bye.
Je maîtrise les grep/ps/kill et autres, ce n'est pas le souci, je cherche simplement une manière de virer les sockets qui sont encore ouverts alors que l'appli ne tourne plus (vérifié avec un ps ux).
Comme tu le dis, le problème vient de la conception de mon appli, j'ai pas beaucoup de temps et du coup je fais un peu n'importe quoi.
Aurais tu des tutos à me recommander sur l'utilisation de gdb ou ptrace par exemple stp ? Pour l'instant le debug se limite à des printf, c'est un peu lourd :/
Merci d'avance :)