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

Shell et commandes GNU Discussion :

Comment arrêter un processus récursif après la création de 3 enfants ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut Comment arrêter un processus récursif après la création de 3 enfants ?
    Bonjour,
    je suis entrain de créer des processus fils et petit fils en bash ,mais j'utilise la récursivité et je voulais l’arrête au moment ou j'ai généré les 3 enfants

    code parent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #! /bin/bash
     
     
     
    ./enfant & 
    	sleep 0.5
    code enfant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	echo "[$$][$PPID]"
     
    ./agent6 & 
    sleep 0.5
    je veux vraiment de l'aide j'ai cherché mais j'arrive pas

  2. #2
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    De ce que j'en comprends ce n'est pas du C mais du bash qui créé les processus ?
    Dans ce cas regarde du côté de la commande "ps" qui te retournera la liste des processus tournant actuellement.
    Tu pourras faire un "grep" dessus pour récupérer uniquement les processus t'intéressant et tu n'as plus qu'à les compter.

  3. #3
    Membre Expert Avatar de Ti-Slackeux
    Homme Profil pro
    Robotique
    Inscrit en
    Août 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Robotique

    Informations forums :
    Inscription : Août 2007
    Messages : 904
    Par défaut
    Bonjour,

    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $! > /var/run/program.pid
    il suffit ensuite de kill le pid voulu.

    Bonne journée

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    ps ne sert à rien là...

    L'exemple donné nous montre un parent qui crée un fils qui lui même crée un fils... tu parles de trois fils, c'est pas très clair entre un père, un fils et un petit fils...

    Sinon, pour arrêter ta récursivité, c'est le même principe que pour la factoriel ou fibonacci, tu passes à ton/tes script un paramètre genre compteur que le script incrémente (ou décrémente) et celui-ci ne lance plus de fils quand le compteur a atteint sa limite.

    d'ailleurs, chacun des pères devrait aussi attendre que les fils soit fini avant de mourir: vois du coté de la commande wait.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 10
    Par défaut
    bonjour,
    merci de ta réponse j'ai fais comme le factoriel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    agent6()
    {
     
    local i=$1
     
    echo "[$$][$PPID]"
    if [ $i -eq 0 ]
    then 
    exit O
    else
     
    	agent6 $(( i - 1))
     
    fi
     
     
    }
     
     
    agent6 $1

    mais quand je compile il ne se rappel pas récursivement

    j'ai ça

    [50483][56689]
    [50483][56689]
    [50483][56689]
    ./agent6: ligne 10 : exit: O : argument numérique nécessaire

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Il ne faut pas confondre O et 0.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 376
    Par défaut
    Et exit, c'est violent, en plus ici, ça ne sert pas à grand chose car la fonction ne crée pas de fils...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/01/2016, 11h20
  2. [Débutant] Comment changer la connectionString aprés la création du setup ?
    Par hamza_azerty dans le forum C#
    Réponses: 2
    Dernier message: 21/01/2015, 23h01
  3. Réponses: 7
    Dernier message: 04/05/2011, 21h26
  4. Réponses: 0
    Dernier message: 02/08/2007, 14h31

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