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

Threads & Processus C++ Discussion :

Lancer un processus et, vérifier si un autre est déjà lancé


Sujet :

Threads & Processus C++

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 141
    Points : 195
    Points
    195
    Par défaut Lancer un processus et, vérifier si un autre est déjà lancé
    Salut,
    Je travaille sur deux programmes qui doivent pouvoir s'appeler mutuellement, l'un utilise Qt mais l'autre utilise la librairie standard uniquement (pour que l'exécutable soit indépendant et n'ait pas besoin de .dll).

    Avec Qt j'ai trouvé une fonction intéressante QProcess::startDetached
    bool QProcess::startDetached ( const QString & program ) [static]
    Cette fonction permettrait de lancer un programme et de le rendre indépendant au niveau des processus.

    Maintenant j'ai aussi besoin de vérifier si un programme est actif (un programme bien précis dont j'ai le chemin) avec Qt encore.

    Mais mon autre problème c'est de vérifier l'activité d'un programme spécifique (dont j'ai le chemin), et de pouvoir le lancer, mais en utilisant uniquement la librairie standard (Ou des librairies que je peux compiler dans l'exécutable pour qu'il n'ait pas besoin de .dll)

    Est-ce que vous savez comment faire ça?

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Tu peux utiliser de la shared_memory pour faire communiquer tes processus entre eux.

    Sinon, si tu es sous Linux (mais tu parles de dll, ça n'est donc peut-être pas le cas), tu peux utiliser dbus.

  3. #3
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 905
    Points : 2 129
    Points
    2 129
    Par défaut
    Admettons 2 programmes PRG1 et PRG2 que toi tu va programmer (si j'ai bien compris)
    tu que PRG2 puisse vérifier si PRG1 est en route.
    tu peux lors de l'initialisation de PRG1 positionner un mutex qui permettra de l'identifier comme étant en cours d'exécution, un peu comme quand on veut savoir si le programme que l'on exécute n'est pas déjà lancé.
    PRG2 en se lançant vé regarder si le mutex de PRG1 est positionné (et ainsi savoir s'il est en cours d'exécution).
    A la limite, tu peux (puisque tu connais son nom et son chemin) mettre en ressource dans l'exécutable de PRG1 le nom de ce mutex, et PRG2 ira ouvrir cette ressource, prendre le nom du mutex de PRG1 à vérifier puis regarder s'il est positionné. Comme ça, rien ne sera fixé "en dur".
    (car un tel mutex sera en général nombre aléatoire unique genre GUID pour éviter les collisions avec d'autres programmes).
    C'est de la bidouille et j'ai pas testé, mais ça doit pouvoir marcher.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    tu peux t'inspirer de cette entrée de la FAQ (spécifique windows, mais le principe du mutex nommé devrait marcher sans MFC).

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/05/2007, 14h54
  2. Faire lancer un processus par un autre utilisateur
    Par MasterOfChakhaL dans le forum Administration système
    Réponses: 4
    Dernier message: 20/11/2006, 18h05
  3. Comment vérifier si un activeX est déjà lancé?
    Par mr.saucisse dans le forum MFC
    Réponses: 12
    Dernier message: 22/03/2006, 10h39
  4. [DEBUTANT]Lancer plusieurs processus
    Par demontools dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2005, 13h48
  5. lancer des processus
    Par dylan dans le forum Général Python
    Réponses: 2
    Dernier message: 10/06/2004, 14h02

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