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 :

Script en mode "silencieux"


Sujet :

Langage Perl

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut [résolu] Script en mode "silencieux"
    Bonsoir,

    Je cherche à lancer un script en mode silencieux pendant tout son déroulement,
    plutôt que d'ajouter des lignes de type >/dev/null 2>&1

    Existe-t-il une commande de redirection de la sortie écran, que j'activerais en début
    de script, et désactiverais à la fin. (Je n'ai pas trouvé d'info sur le sujet).

    Merci pour votre aide.

  2. #2
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    En fait un "print" écrit sur le handle par défaut qui est STDOUT. Tu peux changer le handle par défaut en utilisant :
    A+
    Rv

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par strach
    Bonjour

    En fait un "print" écrit sur le handle par défaut qui est STDOUT. Tu peux changer le handle par défaut en utilisant :
    A+
    Rv
    Désolé mais j'ai du mal à suivre (ne m'en veux pas je débute...).
    Pourrais-tu détailler davantage ?
    Merci.

  4. #4
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    Le code suivant peu éclairer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    open FIC, ">/tmp/test.tmp"; #on ouvre en écriture un fichier temporaire avec le handle FIC
    select FIC; # On selectionne le handle FIC 
    print "hello world !"; # On écrit dans le handle FIC
    close FIC; 
    print STDOUT "hello world 2 !!"; #On écrit dans le handle STDOUT donc sur l'écran
    A+
    Rv

  5. #5
    Expert éminent
    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
    Points : 8 586
    Points
    8 586
    Par défaut
    Y a plus simple et propre : rouvrir STDOUT vers "/dev/null" ou équivalent. C'est ce que font tous les daemons sous Unix par exemple.

    --
    Jedaï

  6. #6
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Est-ce, ce que tu voulais dire, jedai ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    open STDOUT, ">/dev/null";
    print "hello";
    close STDOUT;
    Ca fonctionne, mais je ne peux pas récupérer le handle STDOUT vers le device stdout après.
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open STDOUT, ">/dev/stdout";
    Sans succés !!!

    A+
    Rv

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Jedai
    Y a plus simple et propre : rouvrir STDOUT vers "/dev/null" ou équivalent. C'est ce que font tous les daemons sous Unix par exemple.

    --
    Jedaï
    C'est EXACTEMENT ce que je recherche !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open STDOUT, ">/dev/null";
    Mais comme le fait remarquer stratch, on n'arrive pas à rediriger STDOUT ver l'écran.
    Donc impossible d'afficher mon message de fin de script...

    Quelle est la commande pour revenir en arrière ?

    EDIT
    en réalité, on ne bascule totalement en mode silencieux...
    Je viens de m'apercevoir que ces 2 lignes s'affichent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system "wget url";
    system "rar e -o+ $GrabDir/$RarFileName";
    Ceci améne une question supplémentaire : peut-on choisir, en début, de script,
    de ne pas afficher les sorties des commandes système ?

  8. #8
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par kafifi
    Mais comme le fait remarquer stratch, on n'arrive pas à rediriger STDOUT ver l'écran.
    Donc impossible d'afficher mon message de fin de script...

    Quelle est la commande pour revenir en arrière ?
    Bonjour

    En fait je me suis un peu précipité
    Chez moi (Debian), il faut rediriger STDOUT vers /dev/pts/1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open STDOUT, ">/dev/pts/1";
    et on peut à nouveau écrire sur l'écran !

    Une autre façon de faire, est de dupliquer le handle de sortie avant de le rediriger vers /dev/null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    open SAVE, ">&STDOUT";
    open STDOUT, ">/dev/null";
    #tout ce qu'on écrit ici va vers /dev/null
    close STDOUT;
    open STDOUT, ">&SAVE";
    #On a restauré la sortie vers l'écran
    A+
    Rv

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par strach
    Bonjour
    ...
    Une autre façon de faire, est de dupliquer le handle de sortie avant de le rediriger vers /dev/null :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    open SAVE, ">&STDOUT";
    open STDOUT, ">/dev/null";
    #tout ce qu'on écrit ici va vers /dev/null
    close STDOUT;
    open STDOUT, ">&SAVE";
    #On a restauré la sortie vers l'écran
    A+
    Rv
    MERCI ! Je viens de tester : c'est "propre" côté écriture, et parfaitement fonctionnel sur ma Mandrake.
    Toutes les lignes de ce type sont masquées :
    En revanche, cela ne joue pas sur les commandes "sytem" de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    system "wget http://mon_url"; 
    system "rar e -o+ file.rar";
    C'est mon dernier "petit souci" sur le sujet. Existe-t-il une solution aussi élégante ?

  10. #10
    Membre du Club
    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
    Points : 49
    Points
    49
    Par défaut
    Bonjour

    Pour le problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("wget url");
    il suffit de rediriger aussi STDERR vers /dev/null, en ayant pris soin de le dupliquer avant. Ensuite tu le restaures et tout rentre dans l'ordre !!!

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("rar ....");
    je n'ai pas pu tester mais ça devrait être pareil.

    A+
    Rv

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par strach
    Bonjour

    Pour le problème avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("wget url");
    il suffit de rediriger aussi STDERR vers /dev/null, en ayant pris soin de le dupliquer avant. Ensuite tu le restaures et tout rentre dans l'ordre !!!

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("rar ....");
    je n'ai pas pu tester mais ça devrait être pareil.

    A+
    Rv
    Effectivement cela fonctionne.
    Merci pour ton support !

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

Discussions similaires

  1. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 20h01

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