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 :

Liste en temps réelle processus Linux


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Liste en temps réelle processus Linux
    Salut à tous,

    Voila je suis actuellement entrain de créer un petit programme en C++ et gtkmm pour le GUI qui permet de lister tous les processus Linux en cours. Jusque là aucun soucis je liste bien tous mes processus.

    Maintenant j'aimerais allez plus loin en listant en temps réelle les processus qui débute ou ce termine, un peu comme le task manager de windows, mais j'ai aucune idée de comment faire ou par ou commencer.

    Utiliser un Thread peut-être qui s'occuperait de récupérer les processus ou alors une fonction qui serait appelé tous les x secondes afin de récupérer les processus et ensuite rafraichir mon tableau ?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 898
    Points : 219 724
    Points
    219 724
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    Je pense que l'idée du thread est la meilleure.
    Sinon, en seconde idée à voir, c'est d'utiliser iNotify sur /proc ...

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Je pense que l'idée du thread est la meilleure.
    Sinon, en seconde idée à voir, c'est d'utiliser iNotify sur /proc ...
    Je pense aussi utiliser un Thread, le soucis c'est que je ne connaît pas trop ce domaine j'aimerais utiliser les thread c++11 std::thread, le soucis c'est que je ne comprend pas trop comment avoir un thread qui tourne tout au long de mon main.
    D'après ce que j'ai compris je fait une fonction qui va récupéré mes processus et qui sera appelé par mon Thread jusque là pas de soucis.

    Après dans mon main je fait quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::thread t1 (ma_fonction_qui_recupere_les_processus);
     ... code ...
    t1.join();
    Si j'ai bien compris le .join() sert à joindre mon thread avec le thread du main c'est bien ça? Le soucis la c'est que je ne vois pas comment mon Thread peut être exécuter pendant toute la durée de vie de mon programme.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 898
    Points : 219 724
    Points
    219 724
    Billets dans le blog
    125
    Par défaut
    Le thread doit d'une façon ou d'une autre, signaler à l'interface que les données sont prêtes. On peut pour cela, utiliser un mutex ou autre. Le join ne sera pas nécessaire, car le join place le thread appelant en attente de l'arrêt du thread.
    On peut imaginer un thread, comme un second programme (ou une fonction) que l'on aurait lancé en parallèle du premier.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Ok je vois donc si je n'utilise pas le join mon thread tournera pendant toute la durée dévie de mon programme? J'ai un peu de mal à saisir en faite comment faire tout ca

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 898
    Points : 219 724
    Points
    219 724
    Billets dans le blog
    125
    Par défaut
    En effet, et uniquement lorsque l'utilisateur veut quitter, que l'on va se débrouiller pour quitter le thread et faire un join pour être sur qu'il est bien mort. Le join, c'est un peu comme donné des coups de battons dans un corps .

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Ok mais il y a quelque chose que j'ai du mal à saisir dans ce code tout simple par exemple :

    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
    21
    22
    23
    24
     
    #include <iostream>      
    #include <thread>         
     
    void foo()
    {
        std::cout << "hello\n" << std::endl;
    }
     
     
    int main()
    {
        std::thread first (foo);    
     
     
        std::cout << "Main...\n";
     
        //  .... CODE ....
     
        //fin de mon main
        first.join();             
     
        return 0;
    }
    Maintenant dans mon cas de la récupération des processus en temps réelle, j'aimerais que la fonction appelé par mon thread puisse tourner en boucle et je vois pas trop comment faire ça, une boucle dans la fonction de mon thread ? mais je ne pense pas que ce soit la bonne méthode. Je suis vraiment un peu perdu sur la mise en place de cette fonction.
    Tout les tutos que je trouve font de simple cout avec le nom du thread et son id par exemple.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 128
    Points : 33 053
    Points
    33 053
    Billets dans le blog
    4
    Par défaut
    Un thread c'est juste un truc un peu magique qui lance une fonction en parallèle du programme principal.
    Et qui s'arrête quand il a terminé son exécution.
    Donc si tu veux un truc qui tourne "tout le temps", tu mets une boucle, et tu t'arranges pour pouvoir l'arrêter quand tu veux. Avec un flag par exemple.

Discussions similaires

  1. transaction bloquée dans un processus linux
    Par ckermorgant dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/08/2007, 18h19
  2. Faire une réplique en temps réelle
    Par Chikh001 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 16/08/2007, 09h19
  3. [Système] gestion des processus linux
    Par julien.63 dans le forum Langage
    Réponses: 6
    Dernier message: 17/11/2006, 23h16
  4. fonction pour calculer le temps de processus
    Par torNAdE dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 23/10/2006, 15h54
  5. Réponses: 2
    Dernier message: 07/08/2006, 11h48

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