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 :

Share memory


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Points : 59
    Points
    59
    Par défaut Share memory
    rebonsoir,

    j'ai une deuxieme question : Comment on supprime une share memory ??

    Je pensais en fait que si la share memory n'était plus attachée a aucun processus, le kernel la supprimait mais semble que ce n'est pas le cas...

    A la fin de mon programme je détache la mémoire (meme si je pensais que lorsque le processus meurt le kernel détachais le segment de mémoire). Pourtant quand je fais
    il m'affiche des segments de mémoire que j'ai créé avec un nattach de 0.

    Comment faire pour supprimer un segment de mémoire partagé alors ???

    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Avec shm_unlink

    et dans le terminal, tu peux toujours les retirer en faisant un ipcrm (je te renvoie au man pour son utilisation)

    ++
    Pouic

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    aaah =)

    m'enfin j'ai cherché une fonction comme ca et c'est marqué dans aucune page de man et eclipse ne me la trouve pas quand je fais le magique CTRL-SPACE..

    Je teste ca de ce pas :p

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    hu si j'ai bien compris shm_unlink vire un lien qui a été créé entre un file descriptor et une shmem mais ne vire en rien la share mem. Si j'ai bien compris, on peut faire un sh_open qui va faire un get et créer un lien. L'unlink sert juste a virer ce lien.

    Mais je me trompe peut-etre

  5. #5
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Arf,

    oui, c'est ça, je tape parfois trop rapidemment...
    en fait, les grosses etapes pour la manipulation des segments partagés (en ipc systeme V):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    shmget(.....) /* recupere un clef */
    shmat(.....) /* attache le segment */
    shmdt(.....) /* detache le segment */
    et enfin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    shmctl(.....) /* detruit le segment: mais attention, il faut utiliser le flag IPC_RMID en deuxieme parametre */
    et en selon la norme posix(si ca t'interesse (moi je fais comme ca) ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    shm_open /* recupere un file descriptor */
    ftruncate /* permet de fixer une taille de fichier associée au file descr recupéré */
    mmap /* permet de charger l'espace créé dans la zone de memoire partageable par plusieurs processus */
                puis
    munmap /* on decharge */
    shm_close /* on ferme (mais ce n'est pas obligatoire */
    shm_unlink /* on "detruit"  */
    ++
    Pouic

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    nickel cette fois c'est bien ce que je cherchais

    merci bcp :p

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

Discussions similaires

  1. ORA-27101: shared memory realm does not exist
    Par Mella dans le forum Connexions aux bases de données
    Réponses: 21
    Dernier message: 13/01/2013, 15h06
  2. ORA-27101: shared memory realm does not exist.
    Par mogweys dans le forum Oracle
    Réponses: 4
    Dernier message: 20/06/2006, 12h56
  3. Syscall - shared memory
    Par breezer911 dans le forum Linux
    Réponses: 4
    Dernier message: 06/04/2006, 18h22
  4. shared memory entre ordi c++
    Par yaronillouz dans le forum C++
    Réponses: 9
    Dernier message: 20/02/2006, 22h02
  5. Réponses: 10
    Dernier message: 07/02/2006, 13h22

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