Purger les ports bindés en C sous unix

Purger les ports bindés en C sous unix - C - Programmation

Marsh Posté le 12-12-2005 à 20:30:27    

bonjour,
j'ai un programme avec des connections tcp, udp ect..
lorsque je quitte tout, certains de mes ports sont toujours "in use"
je verifie avec un ps et ps -aef que tous les processus en questions sont morts,
eh ben il le sont !
J'ai entendu dire qu'il existe une commande pour 'purger' les ports, c'est a dire
vérifier que le programme attaché a ce port tourne toujours. je ne la trouve pas.
vous l'avez ? :) merci

Reply

Marsh Posté le 12-12-2005 à 20:30:27   

Reply

Marsh Posté le 12-12-2005 à 21:40:30    

meumeul a écrit :

bonjour,
j'ai un programme avec des connections tcp, udp ect..
lorsque je quitte tout, certains de mes ports sont toujours "in use"
je verifie avec un ps et ps -aef que tous les processus en questions sont morts,
eh ben il le sont !
J'ai entendu dire qu'il existe une commande pour 'purger' les ports, c'est a dire
vérifier que le programme attaché a ce port tourne toujours. je ne la trouve pas.
vous l'avez ? :) merci


close() ? closeconnect() ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-12-2005 à 21:44:46    

le problème, c'est que j'ai un serveur qui tourne avec des connections dans un selec dans une bouclie infinie... Donc pour quitter, Ctrl+c !
et quand on fait ctrl+c, en C, il me semblait que les descripteurs de fichiers, sockets et toute la clique était fermés.
 
faut il catpurer le signal ctrl+c et fermer les descripteur ? c'est fastidieux ...

Reply

Marsh Posté le 12-12-2005 à 22:03:54    

meumeul a écrit :

le problème, c'est que j'ai un serveur qui tourne avec des connections dans un selec dans une bouclie infinie... Donc pour quitter, Ctrl+c !
et quand on fait ctrl+c, en C, il me semblait que les descripteurs de fichiers, sockets et toute la clique était fermés.
 
faut il catpurer le signal ctrl+c et fermer les descripteur ? c'est fastidieux ...


Tu pourrais avoir une commande sur stdin (mini shell) qui arrête proprement le serveur. Moi, je fais 'quit' et il s'arrête proprement. select() sait aussi surveiller stdin (FILENO_STDIN)
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 12-12-2005 à 22:05:19    

jvais ptêtre dire une bétise, mais atexit() ne peut-il pas aider dans ce cas la ? ( même si la solution du minishell est plus clean ... ou une archi daemon/controller )
 
A vrai dire le couplage des deux n'est pas un mal, une manière propre de quitter (minishell ) n'empeche pas kkun d'être violent et de quitter a coup de Ctrl+C.

Message cité 1 fois
Message édité par 0x90 le 12-12-2005 à 22:06:04

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 12-12-2005 à 22:10:39    

0x90 a écrit :

jvais ptêtre dire une bétise, mais atexit() ne peut-il pas aider dans ce cas la ?


Non. Il faudrait unstaller un callback() pour Ctrl-Break avec signal() et jouer avec d'horribles globales... Pouah!.

Citation :

A vrai dire le couplage des deux n'est pas un mal, une manière propre de quitter (minishell ) n'empeche pas kkun d'être violent et de quitter a coup de Ctrl+C.


On peut installer un callback qui ne fait rien et le Ctrl-C est alors ignoré. Et je ne parle pas d'enregistrer le pid dans un fichier et d'émettre un kill vers ce pid...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed