… et oui ça marche, avec gdb on peut apparemment call une fonction, donc close(). Donc quand on a un bout de code mal foutu qui leak des FDs et qu'on a pas trop d'idée de comment le fix (pour le moment), on peut s'amuser et feel le power en les lui closant à la gueule directement en live. :)
Il faut le pid du programme en question (ça vous savez tous le trouver), et un fichier de commandes gdb pour pas se palucher à la main tous les 1023 - 3 FD. Attention bashisme ! :P
for ((i=3; i<=1023; i++)); do echo "call close($i)"; done > fixfds.gdb
gdb -p 4242 --command=fixfds.gdb --batch
Ah et pour voir les FDs ouverts, il suffit de regarder dans /proc/<pid>/fd