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 :

Appel de execv ou system depuis un thread.


Sujet :

Threads & Processus C++

Vue hybride

piemur2000 Appel de execv ou system... 06/10/2010, 12h20
piemur2000 Si jamais quelqu'un est... 21/10/2010, 09h46
bacelar Plus simple : ... 22/10/2010, 01h47
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Par défaut Appel de execv ou system depuis un thread.
    Bonjour,

    Je viens de remarquer un phénomène bizarre qui me laisse perplexe.
    J'ai une application multithread en C++ sous linux dont l'un des thread exécute des procédures secondaires de manière périodique. L'une de ces procédure démarre un démon si il n'a pas encore été démarré. Le démon est bien démarré mais il m'est impossible de le killer après coup.

    Threads:
    ____________ thread principal
    |________ thread secondaire (qui lance le démon)
    ...
    |________ autre thread

    Démarrage du démon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system(telnetd); // par exemple
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int pid = fork();
    if (pid < 0)
    {
    	std::cout << "Fail to fork." << std::endl;
    }
    else if (pid == 0)
    {
    	char *argv[] = { "telnetd", NULL };
    	execv("/usr/bin/telnetd", argv);
    	_exit(EXIT_FAILURE);
    }
    Est ce que ce problème vous dit quelque chose? Est-il impossible d’exécuter un programme depuis un autre thread? Est-ce que je fais quelque chose de travers?

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Par défaut
    Si jamais quelqu'un est intéressé par ce message, j'ai résolu ce problème en créant un pipe et en exécutant les commandes depuis un processus externe.

    Le scénario est donc le suivant :
    Lorsqu'un thread veut exécuter une commande il écrit cette dernière dans un pipe. Un autre processus lit toutes les données du pipe, les interprète et exécute la commande.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 470

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

Discussions similaires

  1. Appel d'un script PHP depuis PERL
    Par tazmann dans le forum Web
    Réponses: 7
    Dernier message: 09/11/2007, 02h12
  2. Réponses: 1
    Dernier message: 24/04/2006, 18h03
  3. Réponses: 1
    Dernier message: 25/03/2006, 17h53
  4. Réponses: 14
    Dernier message: 15/12/2005, 18h46
  5. Réponses: 6
    Dernier message: 30/09/2005, 00h53

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