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 :

causer entre un père et un fils


Sujet :

C

  1. #1
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut causer entre un père et un fils
    Bonjour, je voudrais qu'un processus père et un fils créé par fork puissent s'échanger des données comme l'écrivain et le lecteur, mais sans passer par aucun fichier intermédiare, et si possible dans les deux sens.
    Cela me paraît possible avec ptrace(PTRACE_PEEK, ... ) et ptrace(PTRACE_POKE, ... ), mais j'aimerais que l'on m'indique un exemple. (sous linux)
    Merci.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Sous nux, il est très facile pour deux programmes père et fils de communiquer.
    Pour un modèle producteur/consommateur, tu peux utiliser deux sémaphores et un segment de mémoire partagée, ou bien juste un tube anonyme (voire deux si tu veux une communication bidirectionnelle).

    Ou encore un Socket Unix...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    oui merci,
    pourrais tu m'indiquer un exemple qui fonctionne aussi bien sous linux (chez moi) que sous sunOS 5.8 au boulot ? merci

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Personnellement, non, car je suis plus un développeur Windows. Mais un gourou linuxien va sûrement passer dans les parages...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    un pipe devrait faire l'affaire

    Un petit point d'entrée : http://developers.sun.com/solaris/ar...med_pipes.html
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  6. #6
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    oui alors ça m'intéresse de savoir comment passer des données entre un père et son fils qui existent déjà, parce que l'exemple que j'ai trouvé, http://www.developpez.net/forums/d53...s/tubes-pipes/ semble redémarrer celui des deux qui sert de source.
    Alors les linuxiens, est il possible de passer des données entre un pére et son fils après que le fork ait eu lieu ?

  7. #7
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    merci ram-000000; cet exemple me paraît très bien, et il est bien écrit pile pour du linux et du solaris 8; c'est super, merci encore, et maintenant il me reste plein de boulot pour mettre ça en oeuvre sur mes machines.
    David

  8. #8
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    ram-000000,
    je suis en train d'essayer de mettre en place les pipes que je vois dans l'exemple vers lequel tu m'as envoyé un lien, et je m'aperçois qu'il sagit d'un client et d'un serveur, éventuellement reliés en full-duplex par les deux pipes.
    Y a-t'il un empêchement que je ne verrais pas encore à ce que le serveur et son client soient en fait un père et son fils ?
    Je vais essayer d'incorporer les pipes entre mes père et fils, mais peux tu me dire dès maintenant si je ne risque pas de me retrouver face à une impossibilité ?
    merci.

    PS j'ai trouvé dans le man pipe de linux exactement ce que je vouleis.

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Y a-t'il un empêchement que je ne verrais pas encore à ce que le serveur et son client soient en fait un père et son fils ?
    Je vais essayer d'incorporer les pipes entre mes père et fils, mais peux tu me dire dès maintenant si je ne risque pas de me retrouver face à une impossibilité ?
    Non, le fait qu'il soit père ou frère ou cousin ou inconnu entre eux n'a aucune incidence.

    Le seul truc, c'est un problème de droit. Il faut que le lecture ait le droit de lire dans le pipe.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    Ok merci ram-0000,
    j'ai finalement utilisé des pipes nommés entre mon processus fils et son père; cela marche très bien pour l'instant, mais j'ai des choses incongrues dues me semble-t'il à un manque de sychronisation entre les deux process.
    -le début se passe bien, le père forke,
    -le fils qui est créé envoie un message à son père par le pipe et le dit,
    -le père reçoit le message par le pipe et le dit aussi.

    Je voudrais ensuite que le père fasse quelques transformations sur le message qu'il a reçu, et se serve du résultat pour lire des choses dans l'espace mémoire du fils avec ptrace(PTRACE_PEEKUSR, pid_du fils, *adresse_à_lire, pas_important), puis pour en écrire d'autres avec ptrace(PTRACE_POKEUSR, pid_du fils, *adresse_à_écrire, *mot_à_écrire).

    Comment puis-je faire pour que le fils attende tranquilement que sa mémoire soit lue sans aller jusqu'à sa fin, puis pour qu'il attende encore un peu que le père construise la donnée qui va lui être mise en mémoire, et qu'il redémarre seulement après cela, avec la donnée modifiée en mémoire ?
    Merci de m'aider dans tout ce bazar.
    David

  11. #11
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    ... pour lire des choses dans l'espace mémoire du fils ...
    Heu, ca c'est le meilleur moyen de se casser la gu...le.

    Si tu as un pipe entre le père et le fils, sert t'en pour créer ton propre protocole applicatif, c'est beaucoup plus safe et portable que cette rustine de lire l'espace mémoire.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  12. #12
    Expert éminent
    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
    Par défaut
    Citation Envoyé par dva2tlse Voir le message
    Je voudrais ensuite que le père fasse quelques transformations sur le message qu'il a reçu, et se serve du résultat pour lire des choses dans l'espace mémoire du fils avec ptrace(PTRACE_PEEKUSR, pid_du fils, *adresse_à_lire, pas_important), puis pour en écrire d'autres avec ptrace(PTRACE_POKEUSR, pid_du fils, *adresse_à_écrire, *mot_à_écrire).
    Ca y'est, il est repassé en mode délire...

  13. #13
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    Ca y'est, il est repassé en mode délire...
    Ben oui, t'avais pourtant bien remarqué que j'avais la tête dure.
    à bientôt,
    David

  14. #14
    Membre éclairé
    Homme Profil pro
    ingénieur calcul
    Inscrit en
    Décembre 2007
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur calcul
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 363
    Par défaut
    Non, non, en fait; j'arrête le délire c'est promis, mais je veux finir par trouver un moyen d'accéder à une structure proc dont je ne connais que l'adresse virtuelle. (et c'est pas du tout gagné...)
    David

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2011, 14h16
  2. Gestion des exceptions entre job Père et fils
    Par jbe77 dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 13/10/2009, 11h08
  3. Erreur de dialogue entre formulaire père et fils
    Par talrashha dans le forum IHM
    Réponses: 3
    Dernier message: 22/08/2008, 14h38
  4. fork : créer UN fifo entre le père et SES fils
    Par ankou29666 dans le forum Langage
    Réponses: 3
    Dernier message: 09/09/2007, 17h33
  5. Réponses: 8
    Dernier message: 09/11/2006, 14h01

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