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 :

Tuer un groupe de processus


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Inscrit en
    Mai 2012
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 78
    Par défaut Tuer un groupe de processus
    bonjour je fais un programme et à un moment je dois créer plusieurs processus qui tourne en boucle infinie et je veux les arrêter avec le père en tuant le groupe de processus

    donx voila ce que j'ai fais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int i=0;
    int pid;
    if((pid = fork())==0){
    		setpgid(pid,NULL);
     
                    // ici *4
                    if((pid = fork())==0){
                                while(1)printf("%d",i);
                    }
    }else{
     		getchar();
     		kill(pid,9);  // je tue le groupe de proc dans le père 
    }
    mais mes 4 procs tournent toujours donc mon kill ne marche pas

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    N'aurais-tu pas lu un peu trop rapidement le man?

    Citation Envoyé par http://man.developpez.com/man2/kill.2.php
    L'appel-système kill peut être utilisé pour envoyer n'importe quel signal à n'importe quel processus ou groupe de processus.
    Si pid est positif, le signal sig est envoyé au processus pid.
    Si pid vaut zéro, alors le signal sig est envoyé à tous les processus appartenant au même groupe que le processus appelant.
    Si pid vaut -1, alors le signal sig est envoyé à tous les processus sauf celui de PID 1 (init), mais voir plus bas.
    Si pid est inférieur à -1, alors le signal sig est envoyé à tous les processus du groupe -pid.
    Si sig vaut 0, aucun signal n'est envoyé mais les conditions d'erreur sont vérifiées.
    Sinon pourquoi ne pas utiliser des threads ?
    Il te suffirait alors d'avoir :
    -while(running) dans tes processus fils et de faire un running = 0; lorsque tu veux arrêter tes processus, ce sera un peu plus propre.

    Si tu veux vraiment utiliser des forks et des signaux, je te conseillerais d'envoyer un signal comme SIGUSER et d'avoir un gestionnaire de signaux dans tes forks pour arrêter proprement ton processus.

  3. #3
    Inactif  
    Inscrit en
    Mai 2012
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 78
    Par défaut
    c'est un td on doit utiliser les fork j'ai pas le choix ^^

    j'ai essayé en faisant

    kill(-pid,9); là normalement Si pid est inférieur à -1, alors le signal sig est envoyé à tous les processus du groupe -pid. mais ça ne les tue pas .


    edit : j'ai rien dis

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Est-ce que tu as fait un ps pour vérifier que tes processus ont bien le bon pgid?

    Regarde aussi la valeur de retour de setpgid (cf man setpgid).

    Sinon tu peux aussi faire un gestionnaire de signaux pour voir si ce dernier est bel est bien reçu.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/05/2011, 14h21
  2. Tuer un groupe d'applications en .Net C#
    Par nobeone dans le forum C#
    Réponses: 2
    Dernier message: 25/09/2010, 18h51
  3. Tuer et lancer un processus
    Par Furius dans le forum Scripts/Batch
    Réponses: 20
    Dernier message: 11/12/2008, 11h33
  4. Comment tuer une liste de processus sous shell
    Par michel.guilhem dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 05/04/2007, 13h39
  5. Tuer une famille de processus.
    Par yanndan dans le forum Linux
    Réponses: 2
    Dernier message: 19/05/2006, 14h03

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