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

Langage Perl Discussion :

help: récupérer traces d'exécutable lancé dans un thread


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut help: récupérer traces d'exécutable lancé dans un thread
    Bonjour,

    J'écris un script Perl qui, dans un thread, lance un exécutable, et doit traiter les traces affichées au fur et à mesure par cet exécutable (i.e: les stocker dans une bdd). Sachant que les premières traces en sortie arrivent quelque temps après lancement de l'exe..
    donc en essayant un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $thr = threads->new(\&sub_fonction);
     
    sub subfonction() {
     
    	$cmd = "./executable | ";
     
    	open(OUT, $cmd) || die "impossible de dupliquer le processus $!";
     
    	while (my $ln = <OUT>) {
    	....
    	}
    	close(OUT);
    }
    Il semble que mon prog n'entre jamais dans la boucle <while> parce que pas de sortie de traces immédiate (en essayant avec la cmd linux date ou ls, ça marche).

    Qqn peut-il m'aider?
    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Le handle OUT est relié à la sortie standard de exécutable. Donc si exécutable n'écrit pas sur la sortie standard, OUT ne recevra jamais rien. De plus, tu devrais laisser quelque secondes à ton exécutable de s'exécuter avant de tester si il a écrit quelque chose sur la sortie standard. Fait un sleep(1) dans ton sous-programme.

    Sinon, c'est quoi la question ?
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

Discussions similaires

  1. Traitement lancé dans un thread
    Par Invité dans le forum C#
    Réponses: 6
    Dernier message: 04/09/2012, 17h23
  2. Réponses: 1
    Dernier message: 01/10/2008, 15h25
  3. [RegEx] Récupérer le nom du dossier dans lequel la page est lancée
    Par AngelFire dans le forum Langage
    Réponses: 3
    Dernier message: 15/12/2007, 11h10
  4. Réponses: 9
    Dernier message: 04/12/2007, 14h37
  5. Récupérer une variable exécuter dans un while
    Par Blo0d4x3 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 04/06/2007, 22h27

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