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 :

ps options juste les processus de mon prog


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut ps options juste les processus de mon prog
    Bonjour

    Je suis un peu néophyte sur linux.

    Par ps -l par habitude, lorsque je le lance coté terminal comme je dois aller dans le repertoire où il y a le programme il me semble qu'il affiche que les processus lié à ce chemin.

    Je n'arrive pas à trouver la commande qui afficherait dans la console de mon ide seulement les infos des processus de mon programme comme si je le lancerais du terminal.
    J'utilise pour cela :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    execlp("ps","ps", "-l", NULL);
    (J'ai essayé pas mal d'options : http://www.linux-france.org/article/...man1/ps-1.html )
    Mais je ne trouve pas la bonne combinaison d'options.
    Cela m'affiche l'ensemble des processus depuis le lancement de l'ide + système.

    J'aimerais réduire le nbre de ligne !
    Merci à vous de vos réponses et connaissances

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Bonjour,

    Par ps -l par habitude, lorsque je le lance coté terminal comme je dois aller dans le repertoire où il y a le programme il me semble qu'il affiche que les processus lié à ce chemin.
    phrase énigmatique : le début est incompréhensible (il manque des mots ?), et la fin me paraît infondée (il faudrait illustrer ce propos).

    as-tu essayé d'utiliser le PID de ton programme ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    je supposais simplement que dans le terminal quand je lance le prog je vais dans le répertoire où il y a l'exe que je lance avec ./monprog
    et dans mon prog il y a la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execlp("ps","ps", "-l", NULL);
    coté terminal il y a moins de ligne que si je lance le prog via l'ide(eclipse). Là il me semble qu'il m'affiche tous les processus y compris ceux de l'ide ; ce qui fait un paquet de ligne !

    oui j'ai testé le PID de mon prog disons que je l'affiche dès l'entrée du prog par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int main() {
    printf("Debut Programme\n");
    printf("main:	PID main: getpid =%d\n",getpid());
    printf("main:	père de main: getppid =%d\n",getppid());
     
    //...
     
    }

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    est-ce que tu peux le récupérer pour l'utiliser avec ps ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    oui que ce soit par le terminal ou la console de l'ide je vois à la fin le PID et le PPID du programme dès qu'il se lance.
    Évidemment via la console il y a une centaine de lignes alors que dans le terminal y'en a une dizaine.

    Dans la console, il indique tous les processus y compris ceux de l'ide ce qui me parait logique.
    J'aurais voulu justement faire en sorte d'afficher que les processus et thread du programme.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    je m'exprime mal sans doute.
    tu dois regarder dans le man de ps pour trouver l'option qui te permettra de lui indiquer de n'afficher que les données pour le PID de ton programme.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    http://man.developpez.com/man1/ps/
    http://www.octetmalin.net/linux/tuto...e-commande.php

    L'option "-p PID" affiche les informations sur un processus
    p pid ID de processus

    ou peut-être
    L'option "-x" permet de visualiser tout les processus actifs de l'utilisateur courant
    car le site man dit !!!:
    x affiche les processus qui n'ont pas de terminal de contrôle.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par nouilletonne Voir le message
    Évidemment via la console il y a une centaine de lignes alors que dans le terminal y'en a une dizaine.

    Dans la console, il indique tous les processus y compris ceux de l'ide ce qui me parait logique.
    J'aurais voulu justement faire en sorte d'afficher que les processus et thread du programme.
    Je ne pense pas que ce soient les processus de l'IDE.

    Je crois plutôt que la différence que tu observes vient de ce que la commande "ps" a été lancée avec des options différentes suivant qu'elle est tapée dans le terminal ou exécutée depuis l'IDE.

    Sous osx (où "ps" est différent car BSD), lorsque je tape "ps -l", je n'ai que les process m'appartenant (UID=501), alors que la commande "ps -al" m'affiche en plus les process appartenant à root (UID=0).

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Donc avec getuid je peux obtenir UID m'appartenant. Par contre si je lance dans la console de l'ide, l'UID sera le mien mais de l'ensemble de l'ide aussi ?
    Je n'ai pas encore essayé, je vais le faire ce matin. Mais j'ai un doute qu'il m'affiche tous les process de l'ide avec encore.

    Par contre puisque j'ai le PID du prog en tout cas du main. Je vais surement commencer par lancer avec la clé de tri :
    p pid ID de processus (PID du main)
    P ppid ID du processus père. PPID du main mais là je risque de me retrouver avec l'équivalent de UID car je serai dans la console de l'ide. Je pense que le PPID du main est le PID de l'ide ?

    j'essaierai les 3 ! A plus tard
    (mais je pense que le plus sur qui est équivalent à ce que j'ai dans le terminal quand je lance l'exe du prog sera : ps - lp PID ou ps -l --sort=PID du prog(ou plutôt du point d'entrée celui du main)

    ps: En attendant il est vrai que j'ai du mal à comprendre les différence BSD et LINUX,... même si j'ai lu ce petit blog qui explique assez bien pour mon niveau :https://framablog.org/2010/08/21/bsd-linux-differences/

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    le PID parent (PPID) de ton programme, c'est le PID de l'IDE, non ?
    comme le PPID d'une session shell, c'est le PID du terminal.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Tout à fait je pense. Mais je suis en train de vouloir tester mais j'utilise mal la syntax de execlp pour ps et j'en ai essayé d'autres (j'ai tester avec pid_t et int :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    execlp("ps","ps", "-lO-p"+pidmain, NULL);
    //execlp("ps","ps", "-l","-O","p"+pidmain, NULL);
    //execlp("ps","ps", "-l","--sort=pid "+pidmain, NULL);
    //execlp("ps","ps","-l ",pidmain, NULL);
    //execlp("ps","ps","-l "+pidmain, NULL);

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    je up ce sujet car je n'ai jamais trouvé la bonne syntaxe de excelp j'ai aussi essayé execvp
    mais avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execlp("ps","ps","-l", NULL);
    Le résultat me donne que le PID du main du programme 3390

    F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
    0 S 1000 2554 2550 0 80 0 - 29064 wait pts/0 00:00:00 bash
    0 R 1000 3390 2554 0 80 0 - 30315 - pts/0 00:00:00 ps
    Mais je n'ai jamais réussi avec excelp à afficher dans la console shell les PID des autres processus fils qui sont créés à l’intérieur du main (PID 3390) et "exécutés dans le main "?

  13. #13
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut Résumé
    En recueillant des bribes d'information deci delà, il me semble avoir compris que:
    • tu utilises l'IDE Eclipse sous Linux
    • pour développer un programme écrit en C
    • que tu exécutes depuis l'IDE
    • et qui utilise la fonction "execlp" pour appeler la commande système "ps"
    • et tu souhaites trouver les bons arguments à passer à "ps"
    • pour obtenir des informations sur tous les processus fils du processus correspondant à l'exécution de ton programme


    C'est bien ça?

    Une piste à tester:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int mon_pid = getpid();
    execlp("ps","ps","-l", "--ppid", mon_pid, NULL);

    Remarque: D'après le man ps:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    --ppid liste_pid
        Sélectionner par PID parent. 
        Cela sélectionne des processus dont le PID parent est dans liste_pid.
        Autrement dit, il sélectionne les processus fils de ceux indiqués dans liste_pid.
    Cette option permet donc d'obtenir les processus dont le ppid est le pid de ton processus, c'est-à-dire tous les processus fils directs de ton processus.

    Si tu veux toute la descendance (petits-fils, arrière petits-fils, etc.), comme je n'ai pas trouvé d'option adéquate, je pense que tu vas devoir construire récursivement la liste par une succession d'appels à ps -ppid <n> où tu ne retournes que le pid des fils directs.
    Si c'est trop difficile à faire en C, il peut être judicieux de l'écrire sous forme d'un petit script "bash".
    Une fois que tu as collecté la liste des PIDs de tous les processus descendants, tu n'as plus qu'à faire un dernier appel à ps -pid liste_pid pour obtenir toutes les informations que tu souhaites sur tous les sous-processus de ton processus.

    Attention: en faisant plusieurs appels successifs à "ps", tu photographies un objet en mouvement, avec le risque de:
    • référencer des processus qui existaient lors d'un appel à "ps" et qui sont terminés lors d'un appel ultérieur à "ps"
    • louper des processus qui ont été démarrés après l'un des appels à "ps".

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    J'avais oublié de dire merci à jack-ft ! (résolu vu que c'est une histoire d'expérience des commandes man linux ou linux)

  15. #15
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    J'arrive un peu tard, mais la commande pstree aurait peut-être aidé ici...
    ɹǝsn *sıɹɐlos*

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

Discussions similaires

  1. [Débutant] Comment appliquer mon prog a toutes les applications?
    Par lbeaumonp dans le forum Visual Studio
    Réponses: 4
    Dernier message: 06/12/2013, 15h28
  2. Les processus créés par system() ne sont pas arrêtés quand mon service windows stoppe
    Par Glavio dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 30/04/2012, 22h25
  3. options cl wall uniquement sur mon code (et non tout les includes)
    Par elekis dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 15/10/2008, 14h47
  4. option de bibliographie pour afficher juste les références citées
    Par RO_student dans le forum Bibliographies - Index - Glossaires
    Réponses: 5
    Dernier message: 18/09/2008, 10h38
  5. Lister tout les objets de mon prog c'est possible?
    Par korntex5 dans le forum Delphi
    Réponses: 9
    Dernier message: 24/10/2006, 11h06

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