Purger les ports bindés en C sous unix - C - Programmation
Marsh Posté le 12-12-2005 à 21:40:30
| meumeul a écrit : bonjour,  | 
 
close() ? closeconnect() ? 
 
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 ...
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 !  | 
 
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) 
 
 
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.
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... 
Marsh Posté le 12-12-2005 à 20:30:27
bonjour, merci
 merci
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 ?