Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1884 connectés 

  FORUM HardWare.fr
  Programmation

  "Passage" de descpteur de fichier ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"Passage" de descpteur de fichier ?

n°26448
NoBlue
Posté le 22-04-2001 à 11:37:33  profilanswer
 

voilà mon pb:
 
j'ouvre un descripteur de fichier ex : 5
je fais un fork et donc le fils1 herite du desc 5.
j'ouvre un autre descripteur de fichier ex : 6
je fais un autre fork et donc le fils2 herite du desc 5 et 6.
ensuite je veux que le fils1 ecrive dans le desc 6 et ca foire :(
(write(6,"salut" );pour le fils  et read(6,...); pour un autre prog)
 
=> normal que ca marche pas? je dois faire quelque chose pour que le premier fils "herite" du deuxième desc (6) ??  
ou ca devrait marcher et c'est moi qui me plante ?

mood
Publicité
Posté le 22-04-2001 à 11:37:33  profilanswer
 

n°26458
nnovic
Posté le 22-04-2001 à 14:02:27  profilanswer
 

A mon avis, ce qui ne fonctionne pas c'est que tu ne peux pas être sûr qu'après 5, le prochain descripteur de fichier disponible sera 6...

n°26459
NoBlue
Posté le 22-04-2001 à 14:05:03  profilanswer
 

hum c'est un exemple, le descripteur c'est linux qui me le donne  
=> j'ai pas du etre très clair ?

n°26464
verdoux
And I'm still waiting
Posté le 22-04-2001 à 14:21:37  profilanswer
 

Je ne pense pas que ce soit possible directement. A la limite il faut que les processus s'échangent entre eux les nomns des fichiers pour pouvoir chacun créer les descripteurs correspondants.
 
Mais si tu as besoin de pas mal de communication entre tes tâches, il doit être intéressant de créer plutôt des threads que des processus. Les threads partagent notamment la table des descripteurs.

n°26471
nnovic
Posté le 22-04-2001 à 15:12:47  profilanswer
 

... ou alors de placer cette information dans une zone de mémoire partagée !

n°26474
NoBlue
Posté le 22-04-2001 à 15:21:59  profilanswer
 

Verdoux > ok j'ai echanger tous les descripteurs entres tous les processus mais après "pour pouvoir chacun créer les descripteurs correspondants. " je dois faire quoi ?? => commande dup ou ??
 
nnovic> le pb du fork c'est que pas de mem partagé mais dupliqué :(

n°26477
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 15:35:28  profilanswer
 

Euh normalement les fichier ouvert par un pere sont accessible par le fils. Enfin je suis presque sur que oui. Sinon tu peux pas utiliser des pipes nommés ou anonyme(plutot anonyme car tu joues avec des fils et des peres)?
noblue->La memoire partagee n'est JAMAIS duplique d'ou le nom, en effet tu as des commandes du genre shmget,shmat,shmdt qui t'attache des zone de memoire qui seront communes a tout les processus qui attacheront cette zone de memoire. Pour info plus clair fais un man sur l'une de ses memoire. N'oublie pas d'associer un semaphore a chaque memoire partagee sinon tu risque des access concurent...

n°26485
NoBlue
Posté le 22-04-2001 à 16:17:07  profilanswer
 

Mystereetbouledegomme> "Euh normalement les fichier ouvert par un pere sont accessible par le fils"
=> entierement d'accord mais mon pb c'est entre fils ?
 
"La memoire partagee n'est JAMAIS duplique "
duplique = fork
partage = le reste
non ?
 
pas de soluce pour mon pb de partage de descripteur de fichier entre plusieurs processus fils créé par un fork ?

n°26487
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 16:23:18  profilanswer
 

Theoriquement sous les systemes UNIX tout est duplique (enfin presque) a partir du moment ou tu ecris qq chose (avant un exec)ds la memoire. En effet la plupart du temps on fait un fork et puis un exec donc ce serait inutile de toujours dupliquer. On fait du "copy on write"  
Pour partager tes descripteurs moi je metrais un vecteur en memoire partagee, ce vecteur contiendrait les indices de ta UFDT. Voila comment je pense qu'on peut faire... Si tu y vois un inconvenient dis le moi et on tachera de trouver autre chose ensemble :-)   :D

n°26492
NoBlue
Posté le 22-04-2001 à 16:39:23  profilanswer
 

Mystereetbouledegomme> je suis preneur de ton idée mais j'y connais rien la dedans.
On est bien d'accord que le but est que plusieures processus "fils" créé avec un "fork" puisse avoir accès au meme descripteur.
(je travaille avec des descripteurs socket)
 
=> j'attend ton aide pour la/les fonctions pour "vecteur en memoire partagee"

mood
Publicité
Posté le 22-04-2001 à 16:39:23  profilanswer
 

n°26494
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 16:47:08  profilanswer
 

Apparement on est d'accord. Il y a deux mois j'ai fait un petit soft avec des copains. On utilisait la memoire partagee afin d'avoir une base de donnees (un graphe en fait) commune a plusieurs porcessus issu du meme pere et ca marchait plutot bien enfin cette la partie consultation/traitement marchait bien.  
 
Je te detaillerai le procede ce soir ou demain car la j'ai pas trop le temps. Mais si tu veux deja commence sache que ce que tu as besoin c'est de faire des man sur les syscall suivant : shmget(creation d'une memoire partagee) shmat(attachement d'une mem partagee),shmdt(detachement d'uns shm)

n°26496
NoBlue
Posté le 22-04-2001 à 16:50:25  profilanswer
 

ok je boot sous linux
on m'avait déjà un peu parler des ces fonctions mais j'étais pas très chaud mais bon si j'ai pas le choix.

n°26497
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 16:52:28  profilanswer
 

Ben le probleme c'est que je voit pas tres bien comment faire d'autre a moins de passer par des pipes nommes.

n°26500
NoBlue
Posté le 22-04-2001 à 17:05:32  profilanswer
 

ce que je pige pas c'est pkoi si je donne le bon descpripteur au processus fils celui n'arrive pas à lire dedans ?

n°26504
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 17:10:52  profilanswer
 

Je pense que la raison est la suivante :  
Tu as un premier truc qu'il s'appelle la File Table c'est la que sont stockes lespointeurs vers les inodes et le file offset ... Ensuite tu as la User File Descriptor Table, la sont stocke les pointeurs vers la FT. Donc quand tu donnes un n° de UFDT a un autre fils cette entree de la UFDT ne pointera pas forecement vers la meme entree de la FT. J'espere que c'est clair.

n°26505
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 17:10:57  profilanswer
 

Je pense que la raison est la suivante :  
Tu as un premier truc qu'il s'appelle la File Table c'est la que sont stockes lespointeurs vers les inodes et le file offset ... Ensuite tu as la User File Descriptor Table, la sont stocke les pointeurs vers la FT. Donc quand tu donnes un n° de UFDT a un autre fils cette entree de la UFDT ne pointera pas forecement vers la meme entree de la FT. J'espere que c'est clair.

n°26508
NoBlue
Posté le 22-04-2001 à 17:20:10  profilanswer
 

très clair j'ai pigé mon pb.
pour l'instant j'ai donné a tous les fils tous les "n° de UFDT" et ce qu'il me manque c'est le "File Table".
quel misère ce truc :)

n°26509
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 17:21:34  profilanswer
 

Exactement, enfin c'est mobn avis perso peut etre que ca n'a rien avoir.

n°26510
NoBlue
Posté le 22-04-2001 à 17:29:03  profilanswer
 

je pense que ta raison car je me souviens d'avoir étudié ces histoire de table y a 2-3 ans :(

n°26512
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 17:31:14  profilanswer
 

toi aussi :-) tu etudie ou?  :??:

n°26513
NoBlue
Posté le 22-04-2001 à 17:35:50  profilanswer
 

Je suis à créteil(94) en Miage et j'ai un DUT info. :)
et toi ?

n°26516
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 17:40:40  profilanswer
 

DUT=?
Je suis a l'ULB(Universit Libre de Bruxelles en Belgique donc) et je fais une maitrise en informatique.

n°26517
NoBlue
Posté le 22-04-2001 à 17:51:51  profilanswer
 

DUT "diplome universitaire de technologie".
(Je suis née près de bruxelles)

n°26524
mystereetb​ouledegomm​e
Posté le 22-04-2001 à 18:11:05  profilanswer
 

I see. Ok si tu as besoin du moindre conseil sur les sharde memory je t'en prie...

n°26525
NoBlue
Posté le 22-04-2001 à 18:12:43  profilanswer
 

thanks :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  "Passage" de descpteur de fichier ?

 

Sujets relatifs
Comment on fait un fichier ExternE de ressources?[PHP] Créer une image dans un fichier?
[pascal] quel est la com pour convertir un fichier Ttexte en tstring ?Fichier reg, la suite !
[C/C++] Eviter de vérifier des fichier inclusComment faire un fichier REG
[SQL Server] exporter vers un fichierFichier *.Wav
[Javascript]Comment changer la couleur d'un lien au passage du curseurAttributs de FICHIER ???
Plus de sujets relatifs à : "Passage" de descpteur de fichier ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR