Bonjour à tous,
Après mettre arraché les cheveux pendant quelques heures sur mon programme client/serveur, je viens de m'apercevoir que lors d'un fork() la file descriptor table (FDT) est dupliquée !
Je vous explique un peu le synoptique de mon programme.
En fait dans le processus courant je fais un accept (qui me renvoi un file descriptor (FD) d'un socket d'un client) et après je fais un fork() pour dédié un nouveau processus au client qui vient de se connecter ! Jusque la tout va bien puisque le processus dédié à une copie de la FDT du père et connait donc le FD du socket de son client.
Mais lorsqu'un second client se connecte le même procédé et appliqué et alors le client 2 connait le FD du client 1 (l'entréé dans sa FDT est valide) par contre le client 1 n'a aucune connaissance du FD du client 2...
Je ne doit absolument pas utiliser de Thread (pour un tas de raisons) sinon la tache aurait été simplifiée !
Je ne peux pas partager uniquement l'entier qui represente le numéro de l'entrée dans la FDT puisque qu'il faut qu'il soit vraiment ouvert !
Comment pourrais-je partager la FDT du père avec ses enfants ?
Merci encore
PS : j'espère que j'ai été assez clair... Sinon dites le moi je ferais une autre tentative d'explication. ;-)
Partager