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 :

"monitoring" d'un script2 lancé par un script1


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut "monitoring" d'un script2 lancé par un script1
    Bonsoir à tous,

    Il me reste un dernier petit détail à régler au niveau de script1 qui appelle script2.
    Je sollicite votre aide car c'est trop spécifique pour apparaitre dans la faq....

    "script2.pl" analyse un fichier texte, et fait défiler les lignes à l'écran au fur
    et à mesure de l'avancement du traitement.
    => visualisation de l'avancement.

    souci :
    lorsque "script2" est lancé par "script1" , l'écran reste noir pendant quelques minutes,
    puis toutes les lignes apparaissent d'un seul coup à la fin du script.
    => plus de monitoring en temps réel.

    Comment puis-je modifier cette différence de comportement ?

    Merci.

  2. #2
    tfe
    tfe est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 85
    Par défaut
    my @data;
    foreach(qx/perl script/)
    {
    print ;
    push @data,$_;
    }

    ce que tu veux avec @data ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 46
    Par défaut
    Bonjour

    Peut-être un problème de tampon sur STDOUT ?

    Essai de passer l'écriture direct (sans tampon) de STDOUT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select STDOUT;
    $| = 1 ;
    A+
    Rv

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    @stratch
    @tfe

    Merci pour vos suggestions. J'ai les ai essayées toutes les deux, en vain.

    J'insiste sur le fait que le second script se lance et s'effectue parfaitement.

    La console de script1.pl ne visualise la sortie de script2.pl
    qu'à la fin du déroulement de ce dernier.

    Help

  5. #5
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Es-tu sûr que tu as mis la solution de Strach au début de tes deux scripts ?
    Et quelle commande utilises-tu pour exécuter le script2 ?

    --
    Jedaï

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par Jedai
    Es-tu sûr que tu as mis la solution de Strach au début de tes deux scripts ?
    Et quelle commande utilises-tu pour exécuter le script2 ?

    --
    Jedaï
    Je viens de re-vérifier que ceci est présent en début de chaque script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select STDOUT; 
     $| = 1 ;
    script1 est lancé à la main à la console :.
    l'appel à script2 par script1 se fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @Result = qx/perl xml.pl -t 1 -v -c $GrabDir"channels.conf" -x $GrabDir$XmlFileName -l $GrabDir$ChannelsTransName/;
    Je confirme que cela ne change rien.
    script2 n'affiche ses informations qu'à la fin de son déroulement. Pendant toute la phase de traitement,
    la console reste désespérement noire...

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Rien de surprenant à cela, puisque tu rediriges la sortie standard du programme vers ton programme Perl. En fait il ne devrait rien afficher du tout, s'il affiche quelque chose c'est qu'il écrit sur la sortie d'erreur.
    Comme pour ton autre message, la solution est d'utiliser open2, et de réaliser toi-même l'écho des messages au fûr et à mesure que tu les récupères.

    --
    Jedaï

Discussions similaires

  1. Transmettre des commandes à un process lancé par ksh
    Par jojolepabo dans le forum Linux
    Réponses: 3
    Dernier message: 19/10/2005, 16h05

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