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

Réseau C Discussion :

Question sur partage de variables


Sujet :

Réseau C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Points : 114
    Points
    114
    Par défaut Question sur partage de variables
    Bonjour,

    J ai 2 programme A et B. Le prgramme A est deja codé et je dois avec le programme B avoir acces aux variables du programme A pour completer ces variables si necessaire.

    Le programme A a un code tres long est assez complique. Je me demander comment je pouvais faire pour que le programme B puisse avoir aces aux variable de A sans pour autant beacoup changer le code du programme A (car ca serait long et fastidieu).

    Je pensé a un segment de mémoire partager mais cela devrait inclure pas mal de modification et en plus des semaphores pour empecher la lecture et l ecriture.
    Le probleme est que je connais pas la taille du segment de memoire car elle peut etre tres variable.

    PS: me conseillez vous utiliser la norme POSIX ou System V ?

    Si quelqu un aurait une idee.

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par berg
    J ai 2 programme A et B. Le prgramme A est deja codé et je dois avec le programme B avoir acces aux variables du programme A pour completer ces variables si necessaire.
    Par définiton, les données d'un processus ne sont pas accessibles à un autre processus. (Heureusement, c'est but des processus). Chaque instance du programme en exécution ayant sont propre processus, ça explique pourquoi le partage des données n'est pas possible entre programme.

    Cependant, il est possible de lancer plusieurs processus et un segment de mémoire partagée au sein d'un même programme. Les détails dépendent du système.

    Sur certains systèmes, il existe aussi des mécanismes d'échanges par sockets (Sockets 'UNIX', par exemple).

    Le plus portable restant évidemment les fichiers. Mais dans tous les cas, les code doit être prévu pour ça. Un programme qui n'a pas prévu de partager ses données, ne va pas se mettre à écrire dans le segment partagé, comme ça comme par magie (à moins que ce ne soit configurable).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Points : 114
    Points
    114
    Par défaut
    Le probleme est que les programme doivent etre bien dissocie pour une raison de portabilité.
    Je pense que je vais plutot me tourner vers les sockets, ou même pourquoi pas sur les tubes.

  4. #4
    Membre actif Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Points : 278
    Points
    278
    Par défaut
    j'ai rien pigé dans votre histoire, alors a part l'utilisation de fichier on pourrait partager des variables, si vous avez une bonne documentation je serais ravie de la lire,

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Points : 114
    Points
    114
    Par défaut
    je le refait en plus clair .


    J ai 2 programme A et B.
    - Le programme A traites des informations qui se trouvent dans des variables.
    Ce programme est deja fait.
    - Le programme B que je suis entrain d implementer doit pouvoir donner des
    informations complementaire au programme A pour qui puisse mieux traiter les
    informations.

    J avais penser au segment de memoire partagé pour avoir une zone de memoire commune entre le programme A et B.

    emmanuel tu dis :
    "Cependant, il est possible de lancer plusieurs processus et un segment de mémoire partagée au sein d'un même programme. Les détails dépendent du système."

    En disant cela j imagine que 2 processus qui ne sont pas dans un meme programme ne pourront pas utiliser de memoire partagee.

    Moi je pensais que la mémoire partagée aloue un segment de mémoire qui peut être accessible depuis n'importe quel programme et que lorsque un programme crée un espace mémoire partagé cet espace est dans un segment de mémoire indépendant de sa propre mémoire, et indépendant de n'importe quel autre programme.

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par lastrecrue
    j'ai rien pigé dans votre histoire, alors a part l'utilisation de fichier on pourrait partager des variables
    Oui, ici on parle de segment de mémoire partagée (shm = shared memory), il y a aussi les messages, les moniteurs, les sémaphores, pour la communication ou la synchro.
    Citation Envoyé par lastrecrue
    si vous avez une bonne documentation je serais ravie de la lire,
    Eh bien tu peux regarder les pages man de toutes les fonctions shmXXX (shmget par exemple, pour commencer). C'est très instructif.
    A titre plus général, dans tout bon livre d'architecture des OS tu auras un chapitre "communication inter-processus". Si ça t'intéresse, je te conseille celui de Tanenbaum, une référence.

  7. #7
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par berg
    Moi je pensais que la mémoire partagée aloue un segment de mémoire qui peut être accessible depuis n'importe quel programme et que lorsque un programme crée un espace mémoire partagé cet espace est dans un segment de mémoire indépendant de sa propre mémoire, et indépendant de n'importe quel autre programme.
    C'est à peu près ça, mais comme l'a dit le grand maître il faut que le programme ait été écrit comme ça. Apparemment dans ton cas tu n'as pas la main sur le code source ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 131
    Points : 114
    Points
    114
    Par défaut
    si mais le code doit faire plusieurs milliers de ligne de codes réparti sur 20-30 fichiers...
    De plus d apres l'echelle du Goret, ce code source est a bonne echelle .

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2006
    Messages : 138
    Points : 124
    Points
    124
    Par défaut
    en utilisant des queues de messages tu ne dois pas avoir beaucoup de modifications à faire.

Discussions similaires

  1. Question sur le partage de variables entre méthodes.
    Par devoluti0n dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2010, 10h11
  2. Réponses: 1
    Dernier message: 17/02/2010, 01h16
  3. Questions sur les listes variables d'argument
    Par cirdan_elf dans le forum C
    Réponses: 3
    Dernier message: 05/12/2009, 17h39
  4. petite question sur la récupération d'une variable
    Par minusette dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2005, 17h57
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59

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