Pb de FORK sur un programme serveur

Pb de FORK sur un programme serveur - C - Programmation

Marsh Posté le 29-04-2004 à 19:13:47    

Je fais un programme qui, pour l'instant, fork lorsqu'il y a une connexion réseau qui se fait dessus.
 
J'ai donc plusieurs utilisateurs connectés simultanément sur le serveur, chacun qui a son processus propre, et entre un telnet et le serveur une discussion peut se faire.
 
Maintenant, j'ai besoin d'accéder à des ressources communes entre chaque processus. Par exemple j'aimerais avoir les pseudos de toutes les personnes connectées sur le serveur à partir d'un processus...
 
J'ai un pointeur sur structure déclaré en global, mais il est copié à chaque fork, et evidemment, les modifications que lui apporte un certain processus sont invisible pour un autre processus...
 
Comment faire ?!
 
Je pense pouvoir utiliser les pthreads, mais je crois que j'en ai pas le droit dans ce projet ci :(

Reply

Marsh Posté le 29-04-2004 à 19:13:47   

Reply

Marsh Posté le 29-04-2004 à 19:17:05    

euh à tout hasard, avec les pipes y'a pas moyen d'arriver à qqc ?


---------------
Fleur de métal, entité invulnérable, vêtue tant bien que mal, d'une muraille inébranlable...
Reply

Marsh Posté le 29-04-2004 à 19:27:15    

Mémoire partagée ?


---------------
"Nous allons reformater les français" © Nicolas Sarkozy
Reply

Marsh Posté le 29-04-2004 à 19:30:56    

pthread/pth

Reply

Marsh Posté le 30-04-2004 à 00:20:29    

Pipe surement pas...
Mémoire partagée ? De quoi parles tu?
 
Sinon oui les pthread semblent la solution la plus évidente.. mais je crois que je suis OBLIGE de forker...

Reply

Marsh Posté le 30-04-2004 à 01:32:12    

mémoire partagée: regarde du côté de shmget & compagnie

Reply

Marsh Posté le 03-05-2004 à 15:05:42    

[:blueflag]  
 
j'ai quasiment le même problème... mon serveur fork quand y'a une connexion, et le fils ouvre une socket avec le client... seulement voilà, quand le fils plante, plus moyen de fermer la socket, et au bout d'un certain nombre de plantage de processus fils, le serveur devient amorphe :cry:

Reply

Marsh Posté le 04-05-2004 à 05:11:15    

Comme dit plus haut : mémoire partagée. En gros tu crée une zone avec shmget un peu comme avec avec malloc, sauf que la zone est accessible au process père et au process fils. Puis tu t'y attaches avec shmat.
 
Par contre après, attention aux accès concurents. Utilises des sémaphores pour gérer les accès...

Reply

Marsh Posté le 04-05-2004 à 16:15:00    

J'aurai dit aussi memoire partagee, masi c'est une grosse merde a mettre en place pour des tests qui risquent de ne pas etre satisfaisant. A ta place je passerai au thread, et au pile systeme. C'est encore le mieux

Reply

Sujets relatifs:

Leave a Replay

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