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,
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