IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

pointeurs dans une memoire partagée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut pointeurs dans une memoire partagée
    bonjour,

    je souhaiterais mettre une chaine doublement chainée dans une mémoire partagée pour que deux programmes puissent y avoir accés.chaque chainon a un ID(int) un pointeur sur l'element précedent et suivant
    En fait un des 2 programmes créer la memoire partagée ainsi que la chaine située à l'interieur.
    Le 2e programme accede bien a cette memoire partagée ,il affiche bien l'id de l'élement mais dés qu'il s'agit d'accéder aux pointeurs pour aller sur le suivant ou le precedent, jle programme plante et j'ai une 'segmentation fault'.
    J'avais lu qu'un pointeur n'a de valeur que pour le programme qui le créé, quant est il lorsque ce pointeur est dans une memoire partagée...?
    est ce que je peux manipuler les pointeurs créé par le programme 1 dans le programme 2 ?

    merci par avance

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    du code

  3. #3
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    je voudrais deja savoir si c'est possible svp

    merci

  4. #4
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Non, ce n'est pas possible, à moins que tu utilises des processus légers. Chaque programme possède son propre espace d'adressage particulier, sous les OS classiques, bons, qui sont respectables.

    C'est le genre de trucs que les électroniciens n'ont pas encore compris qu'il ne faut pas faire : je travaille avec eux en ce moment, et ils ont voulu faire un truc dans ce genre-là... bien-sûr, sous Linux, et tout OS qui se respecte, ce n'est pas possible !

    Faut pas essayer de faire des trucs si dégueulasses !

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    C'est possible (au moins avec la plupart des Un*x) mais c'est parfois plus delicat que ca en a l'air car il faut s'assurer que la memoire partagee est bien mappee au meme endroit par tous les processus. Le plus sur, c'est d'utiliser des deplacements par rapport au debut de la zone de memoire partagee plutot que des pointeurs.

  6. #6
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    Le plus sur, c'est d'utiliser des déplacements par rapport au debut de la zone de mémoire partagée plutot que des pointeurs.
    aurais tu des exemples, ca m'intéresserait de voir ca

    merci

  7. #7
    Membre Expert
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    il faut s'assurer que la memoire partagee est bien mappee au meme endroit par tous les processus.
    Rien n'est moins sûr, et si le processus tente d'accéder à un endroit auquel il n'a pas le droit d'accéder, il ne pourra jamais le faire, même en installant un handler pour le signal SIGSEGV et en évitant de planter le programme.

    Le cas de mmap() me paraît peu probable : mmap() sert à mapper des fichiers dans des zones mémoire, ni plus ni moins. Peut-être que sous certains systèmes l'implantation est défaillante, mais a priori...

    Citation Envoyé par Jean-Marc.Bourguet
    Le plus sur, c'est d'utiliser des deplacements par rapport au debut de la zone de memoire partagee plutot que des pointeurs.
    Quelle est-elle cette zone partagée ? Moi, je n'en connais pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. malloc dans une memoire partagée
    Par iznogoud36 dans le forum C
    Réponses: 7
    Dernier message: 02/07/2007, 16h43
  2. Réponses: 2
    Dernier message: 26/11/2006, 10h51
  3. Libérer des pointeurs dans une std::map
    Par GaldorSP dans le forum SL & STL
    Réponses: 2
    Dernier message: 09/07/2005, 14h42
  4. Réponses: 2
    Dernier message: 15/11/2004, 15h12
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo