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 :

Processus et processus enfant


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut Processus et processus enfant
    Bonjour,

    Encore et toujours des questions existentielle sur les processus. Mon problème est simple, je voudrais récupérer tout les processus enfant d'un processus. Est-ce possible.

    Pour plus d'info, mon appli créer un nouveau process (une commande dos). cette commande fait appelle à d'autre processus. Je voudrais les récupéré pour que lorsque je fait un kill() sur la commande dos je puisse aussi supprimer les proc enfants.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je crois qu'à partir de l'objet Process c'est possible si tu lances le parent.

    Si tu ne lances pas le parent, va falloir s'amuser avec le ProcessID (PID) et le ParentProcessID (PPID).

    L'idée est simple :
    Tu connais le parent : tu compares tous les PPID des process de la liste des process au PID du process parent.
    Et ainsi tu sais si ton process a lancé des sous process et lequels !!!

    Mais problème : La classe Process n'a pas la PPID des process (du moins en .Net 1.1, j'ai pas vérifié sur le 2.0 et plus).
    Donc tu es obligé de passer par du code que je n'ai pas trouvé simple et d'utiliser des classes dont j'ai oublié le nom et qui serve à avoir des stats sur les process de la machine !!!

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    J'ai cherché toute l'après midi,
    Toujours rien trouvé! Et pourtant, c'est la base de chez base des processus le pid et ppid.

    Personne ne peut m'en dire un peu plus?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par mrrenard Voir le message
    J'ai cherché toute l'après midi,
    Toujours rien trouvé! Et pourtant, c'est la base de chez base des processus le pid et ppid.
    Pourtant Ced600 t'a donné une solution simple qui semble valide; l'as tu implémentée ?

    Si oui, qu'est ce qui ne marche pas ?

    Si non, qu'est ce qui te gène dans sa solution ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 141
    Par défaut
    J'avais pas trouvé les class, bluedeep. Mais ca y est après une après midi, j'ai trouvé comment faire :

    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
     
                    System.Management.ObjectQuery tmpQuery = new System.Management.ObjectQuery("Select * from Win32_Process");
                    System.Management.ManagementObjectSearcher oSearcher = new System.Management.ManagementObjectSearcher(tmpQuery);
                    System.Management.ManagementObjectCollection oReturnCollection = oSearcher.Get();  
     
                    foreach (System.Management.ManagementObject oReturn in oReturnCollection)
                    {
                        string tmpParentId = oReturn["ParentProcessId"].ToString();
                        string tmpProcessName = oReturn["Name"].ToString();
     
                        try
                        {
                            Process tmpTest = Process.GetProcessById(Convert.ToInt32(tmpParentId));
                            Console.WriteLine(tmpProcessName + " -> " + tmpTest.ProcessName);
                        }
                        catch { }
                    }

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Ce que j'ai fais me semblais plus compliqué
    Mais bon j'ai pas retrouvé mon code sur ma boite mail, il est certainement chez moi sur une de mes clé usb
    L'essentiel c'est que cela marche.

    Un gros manque le PPID dans la classe process.

    Une autre solution est de passer par Windows Management Instrumentation.
    Je l'avais fait en VBS.

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

Discussions similaires

  1. Créer des processus enfants
    Par Gecko dans le forum NodeJS
    Réponses: 0
    Dernier message: 27/09/2014, 20h22
  2. Tuer processus père et enfant
    Par Korben-Dallas dans le forum C
    Réponses: 16
    Dernier message: 12/05/2011, 12h02
  3. affichage des processus enfants
    Par diden138 dans le forum Linux
    Réponses: 8
    Dernier message: 05/01/2008, 16h40
  4. processus enfant : pas de console ?
    Par The Lord of Nesquik dans le forum Windows
    Réponses: 2
    Dernier message: 27/01/2007, 16h17
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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