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

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 [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 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

    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 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 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 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

    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 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
    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 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
    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 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
    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 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
    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 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 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 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

    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 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 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