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

Linux Discussion :

Surveiller des processus créés par popen


Sujet :

Linux

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Surveiller des processus créés par popen
    Bonjour à tous,

    J'ai un processus père (disons, P) qui lance un fils (disons, F) via un appel à popen.

    J'ai donc un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FILE* sortie;
     
    sortie = popen(F, "r");
    F est un exécutable, évidemment.
    L'intérêt, c'est que le père peut voir la sortie standard de son fils.
    En dehors de cela, aucun échange n'est nécessaire, F doit vivre sa vie tranquille.

    Pour autant, si F tombe, il faut trouver un moyen pour P de le savoir.
    Si possible, un moyen très simple.
    Je sèche un peu, un système de watchdog me paraît lourd.

    Des idées ?
    Merci d'avance !
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par progfou Voir le message
    Bonjour à tous,

    J'ai un processus père (disons, P) qui lance un fils (disons, F) via un appel à popen.

    J'ai donc un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FILE* sortie;
     
    sortie = popen(F, "r");
    F est un exécutable, évidemment.
    L'intérêt, c'est que le père peut voir la sortie standard de son fils.
    En dehors de cela, aucun échange n'est nécessaire, F doit vivre sa vie tranquille.

    Pour autant, si F tombe, il faut trouver un moyen pour P de le savoir.
    Si possible, un moyen très simple.
    Je sèche un peu, un système de watchdog me paraît lourd.

    Des idées ?
    Merci d'avance !
    A mon avis, partir sur un traitement de errno peut marcher
    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
    FILE *fp;
    char ligne[80 + 1];
     
    fp=popen(F, "r");
    if (fp == NULL) => gérer le cas
     
    errno=0;
    while (fgets(fp, ligne, 80 + 1) != NULL)
    {
        ...
    }
     
    if (errno != 0)
        => le fils est tombé
    else
        => fils terminé ok
     
    pclose(fp);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Si je comprends bien, le fgets est là pour récupérer la sortie standard du fils, et quand il tombe il va y avoir un errno avec le code d'erreur.
    Mais s'il part en vrille, et qu'il se met en boucle infinie par exemple, je ne peux pas surveiller le fait qu'il occupe tout le temps CPU ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #4
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Ca ne fonctionne pas.
    J'ai un processus fils qui provoque une erreur de segmentation, et le père me dit qu'il s'est bien terminé.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par progfou Voir le message
    Ca ne fonctionne pas.
    J'ai un processus fils qui provoque une erreur de segmentation, et le père me dit qu'il s'est bien terminé.
    Ok - Et en tentant d'appeler F via fork() + execl() ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Ca fonctionne mieux...
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

Discussions similaires

  1. 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
  2. [Débutant] Écrire dans des labels créés par code ?
    Par pieche dans le forum VB.NET
    Réponses: 2
    Dernier message: 31/01/2012, 22h59
  3. Top N des processus classés par temps CPU
    Par aoemaster dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/12/2011, 21h54
  4. manipuler des objets créés par un autre prg
    Par aziz jim dans le forum C++
    Réponses: 1
    Dernier message: 07/11/2007, 12h08
  5. Définir les droits des fichiers créés par Azureus
    Par sir_gcc dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 20/05/2007, 14h00

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