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

Administration système Discussion :

Processus père attend processus fils


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut Processus père attend processus fils
    Bonjour à tous.
    Mon titre est un peu trompeur, ce que je cherche à faire est un poil plus compliqué.

    Un processus A crée un processus B.
    Le processus B a deux tâches à accomplir.
    Le processus A doit attendre que le processus B ait achevé sa tâche 1 avant de reprendre là où il en était avant de créer le processus B.


    Je code en C, mais c'est sûrement un détail. J'ai pensé à plusieurs solutions dont une presque parfaite :
    Lorsque B a terminé sa tâche 1, il envoie à A (via kill) le signal SIGUSR1 puis commence sa tâche 2. Avant cela, A avait pris soin d'intercepter SIGUSR1 via un handler. Ainsi, lorsque A recevra SIGUSR1, la fonction handler (user-defined) s'exécutera ... oui mais il est question de continuer sa tâche, pas d'en commencer une nouvelle.

    Je peux donner plus de précisions (ou du code) si nécessaire.
    En vous remerciant,

  2. #2
    Membre confirmé Avatar de Qwert
    Inscrit en
    Février 2009
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 147
    Par défaut
    Compliqué toussa....
    Pourquoi ne pas utiliser les threads plutôt?

  3. #3
    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 sémaphore créé par le père
    • puis le père lance le fils
    • et attends que le sémaphore se libère
    • le fils fait sa tâche 1 puis libère le sémaphore
    • le père continue là ou il était en attente bloquante
    • le fils continue sa vie (et meurt éventuellement)
    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
    .

  4. #4
    Membre Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Bonjour à vous deux

    Citation Envoyé par Qwert Voir le message
    Compliqué toussa....
    Pourquoi ne pas utiliser les threads plutôt?
    Je tente de faire avec ce que je connais ... Si ça n'est pas possible, je me renseignerai sur les threads, merci.

    Citation Envoyé par ram-0000 Voir le message
    • Un sémaphore créé par le père
    • puis le père lance le fils
    • et attends que le sémaphore se libère
    • le fils fait sa tâche 1 puis libère le sémaphore
    • le père continue là ou il était en attente bloquante
    • le fils continue sa vie (et meurt éventuellement)
    Cela me semble intéressant, mais qu'entends-tu par "attendre que le sémaphore se libère" ? Je n'ai pas encore mis en place le système de sémaphore dont aura besoin mon application, et je ne sais pas encore comment cela fonctionne en détail. S'agit-il de faire des while(sémaphore pas libéré) sleep(1) ? Si c'est le cas, cela ne me convient pas (à moins que l'on puisse dormir une milliseconde), j'ai en effet msi en place le système de processus parallèles afin d'économiser de précieuses millisecondes ...

    Cordialement,

  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 sémaphore est un objet qui sert à synchroniser des processus.

    Il a 2 états, pris ou libéré
    2 actions sont possibles dessus, Prendre et Libérer. Pour info, il y a en plus les 2 opérations de Création et de Destruction.

    On ne peut prendre un sémaphore que si celui ci est libre. S'il n'est pas libre, l'opération Prendre est bloquante. C'est un blocage géré au niveau du système, nul besoin de boucle de test active du genre "while(1) ..."

    Si est process A est bloqué sur un Prendre et que l'autre process B qui avait pris le sémaphore le sémaphore le libère, le process A est immédiatement libéré.

    Regarde ce tuto : LES SEMAPHORES SOUS UNIX
    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 Expert
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Par défaut
    Merci beaucoup.
    J'ai implémenté la solution 2<-S;[P(S);Z(S)] (deux processus). Cela fonctionne à emrveille ... mais ... Y a-t-il une solution de limiter Z ? c'est à dire que si le fils meurt par erreur, le père reste bloqué ad eternum, ce qui pose un gros problème étant donné qu'il est chargé d'une part de supprimer l'ensemble de sémaphores utilisés, mais aussi de libérer la mémoire partagée.

    Donc, j'aimerais que si Z bloque A pendant plus de n (mili)secondes, A passe en mode dégénéré et se termine en urgence.

    Merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2011, 14h16
  2. C processus père et fils
    Par pjaar dans le forum POSIX
    Réponses: 4
    Dernier message: 21/09/2009, 10h00
  3. Réponses: 2
    Dernier message: 17/12/2008, 13h14
  4. 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