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 :

Lecture décalée dans Mémoire Partagée


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 68
    Par défaut Lecture décalée dans Mémoire Partagée
    Bonjour,

    Je dispose d'un processus attaché à une mémoire partagée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #DEFINE taille 128
    #DEFINE CLE_MP 100
    int mp_ID;
    char* p;
     
    mp_ID = shmget (CLE_MP, Taille, 0666|IPC_CREAT)
    p=(char*)shmat(mp_ID,NULL,0)
    Lorsque je veux lire les 64 premiers caractères (mettons) dans cette mémoire partagée j'utilise une boucle sur p[i].
    Au deuxième passage, je veux lire les 68 caractères suivants. Je peux certes incrémenter i dans ma fonction de lecture. Mais je voulais savoir s'il était possible de faire pointer p non plus sur la première case de ma MP(Mémoire Partagée) mais sur la 68ème (afin de garder ma fonction de lecture inchangée).

    Si oui cette syntaxe est-elle correcte?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    p= p + 64; //incrémentation de l'adresse mémoire de 64 octets
    Merci

  2. #2
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    Oui oui, c'est bon (tu peux même lire la fin avant le début si tu veux)

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2009
    Messages : 68
    Par défaut
    Super!

    Et j'imagine que ceci est rendu possible par le fait que les adresses sont contigues dans la mémoire partagee. (en fait c'est même obligatoire, sinon ça marcherait pas!!)

    Merci! Et comment on fait pour lire à partir de la fin pour info?

  4. #4
    Membre chevronné Avatar de Jenna
    Inscrit en
    Décembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2009
    Messages : 272
    Par défaut
    Citation Envoyé par Marco88 Voir le message
    Et j'imagine que ceci est rendu possible par le fait que les adresses sont contigues dans la mémoire partagee.
    Oui, la mémoier partagée (tes 128 octets) sont mappées dans la mémoire de ton process et c'est le pointeur p (dans ton cas) qui pointe dessus.

    Citation Envoyé par Marco88 Voir le message
    Merci! Et comment on fait pour lire à partir de la fin pour info?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char debut[64];
    char fin[64];
    memcpy(fin, p+64, 64);
    memcpy(debut, p, 64);
    Mais c'était juste pour dire que ce segment de mémoire mappé dans l'espace mémoire de ton process peut être lu de manière classique comme de la mémoire allouée par malloc par exemple.

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

Discussions similaires

  1. Allocation dans un segment de mémoire partagé
    Par Malek_moly dans le forum C
    Réponses: 7
    Dernier message: 23/04/2012, 20h24
  2. Segmentation fault dans un contexte de mémoire partagée
    Par introdisco dans le forum Débuter
    Réponses: 2
    Dernier message: 05/02/2012, 20h48
  3. Réponses: 3
    Dernier message: 24/01/2011, 18h02
  4. Accès écriture/lecture mémoire partagée
    Par ggwtf dans le forum Linux
    Réponses: 6
    Dernier message: 08/05/2009, 20h21
  5. Lecture/écriture dans une mémoire protégée :S en C#
    Par ArnaudDev dans le forum Windows
    Réponses: 7
    Dernier message: 09/06/2008, 15h24

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