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

  FORUM HardWare.fr
  Programmation
  C++

  partage de la memoire entre processus

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

partage de la memoire entre processus

n°291670
muad_dib
Posté le 22-01-2003 à 10:50:07  profilanswer
 

voila j suis en train de programmer un truc sous linux, et j'ai besoin de faire plusieurs processus
je sais que lorsqu'on fait un fork, toutes les variables sont dupliquées de sorte que chacun des 2 processus agissent sur des variables differentes
 
alors j'me suis dit : pas de probleme, j'vais utiliser des pointeurs, comme ca chaque processus aura l'adresse de l'objet que je veux modifier
 
mais ca a pas l'air de marcher
 
alors ma question est :
est-ce normal que meme avec des pointeurs on ne puissent acceder a la meme donnée avec 2 processus differents, et dans quel cas, comment ce fait-ce ?:)
 
merci bien pour vos futures suggestions:)

mood
Publicité
Posté le 22-01-2003 à 10:50:07  profilanswer
 

n°291688
western
AJMM
Posté le 22-01-2003 à 11:01:30  profilanswer
 

oui normal (même les pointeurs sont "dupliquées" )
pthread ou pipe

n°291693
muad_dib
Posté le 22-01-2003 à 11:04:12  profilanswer
 

meme les pointeurs sont dupliques...
cad que pour chaque pointeur il duplique l'objet pointé afin que les adresses ne soient pas les meme ?
quel vicieux alors !
 
bon ben j'vais essayer avec un pipe
 
ca marche comment au juste les pipe ?
faut toujours un tableau de 2 entiers ou on peut faire autrement ?

n°291701
western
AJMM
Posté le 22-01-2003 à 11:21:14  profilanswer
 

sous Linux, utilise la fonction pipe ... en fonction de la communication que tu veux pere ferme l'ecriture et le fils, la lecture ...

n°291726
muad_dib
Posté le 22-01-2003 à 12:07:39  profilanswer
 

oki merci
 
(ncurses sux)

n°291793
muad_dib
Posté le 22-01-2003 à 13:12:02  profilanswer
 

argh, ca marche pas, et j capte pas pkoi
voila ce ke je fais :
dans le main:

Code :
  1. if(pipe(p) == -1)
  2.     printf("erreur a la creation du pipe\n" );
  3.   if(!fork())
  4.     {  process_draw(); exit(0); }
  5.   if(!fork())
  6.     { process_upd(); exit(0); }
  7.   wait(NULL);
  8.   wait(NULL);

 
dans process_upd:

Code :
  1. close(p[0]);
  2.        write(p[1], obj, sizeof(S_objet *));
  3.        close(p[1]);

 
et dans process_draw:
 

Code :
  1. close(p[1]);
  2.     read(p[0], obj, sizeof(S_objet*));
  3.     close(p[0]);

 
 
mon obj est un pointeur sur une struct
j'ai testé les valeurs, elles sont bonnes au niveau de la fonction process_upd
 
par contre elles sont pas passées dans la fonction process_draw
 
et je sais pas ce que je fais de mal
 
please help

n°291801
muad_dib
Posté le 22-01-2003 à 13:25:34  profilanswer
 

bon j'ai mis &obj au lieu de obj, et c deja un peu mieux, je recupere bien la bonne adresse:)
 
par contre les chaps de la struct sont pas bons, mais ca c ptet un autre probleme


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

  partage de la memoire entre processus

 

Sujets relatifs
[C] Liste des processus qui tournent sur le system (windows)?Accès fichier ou gestion en mèmoire
[JAVA] DS vos tirroirs : Simulateur de mémoire (???)Accès carte graphique/mémoire vidéo
[C++] Probleme de libération de mémoireGestion de la memoire virtuelle, winXP
Processus externe[PHP et C++/Linux] Exec(), et processus en tache de fond semi-bloquant
Quel port est écouté par un processus donné ?codage en mémoire d'un nbr signé
Plus de sujets relatifs à : partage de la memoire entre processus


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