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 :

conserver l'ordre des sorties standards


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut conserver l'ordre des sorties standards
    Bonjour,

    Ma sortie standard et ma sortie d'erreur sont toutes les deux dirigée vers le même fichier.

    tous mes "print" sont éditées dans l'ordre dans ce fichier, mais lorsque mes scripts lance un "die", le message d'erreur est écrit en premier dans le fichier de sortie suivi des messages de la sortie standard.

    Je ne trouve pas de solution pour que ma sortie d'erreur soit écrite de façon synchrone avec ma sortie standard afin de conserver l'ordre entre mes messages d'erreur et le reste de ma log.

    Merci pour l'aide que vous pourrez m'apporter.

    Cordialement,

  2. #2
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Alors, déjà, d'une façon générale, regrouper la sortie d'erreur et la sortie standard dans le script même, et directement dans un fichier qui plus est, est une très mauvaise idée. Les rares fois où ça n'est pas le cas sont tellement exotiques qu'aucune ne me vient à l'esprit. Il vaut mieux laisser ce genre de regroupement au shell, ou équivalent.

    Je crois que ton problème est une histoire de tampon. Ce que tu écris dans un fichier n'est pas réellement directement envoyé dans ledit fichier par perl, mais gardé en mémoire, dans le tampon, pour être écrit en bloc quand il y en a assez pour que ça vaille le coup. Ceci parce qu'écrire dans un fichier a un certain coût incompressible en ressources système, en plus du coût variable de l'écriture elle-même (c'est vrai aussi de la lecture, mais en moins grave). Mais quand un programme plante, même volontairement par un die, la sortie d'erreur a tendance à avoir la priorité, puis la mémoire tampon est vidée.

    Il y a divers moyens de résoudre ton problème. Le plus simple est de donner à la variable spéciale $| une valeur non nulle, ce qui désactive le tamponnage en écriture. Mais relis bien ce que j'ai écrit plus haut : il y a un coût.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    Merci pour le conseil que j'ai suivi.
    A savoir conserver une distinction entre ma sortie d'erreur et ma sortie standard.

    Mon objectif était d'avoir le message d'erreur dans ma log pour éviter d'aller chercher à différent endroits lors d'un éventuel problème. Pour obtenir ce résultat, j'ai créé une fonction de log pour tous mes messages et lorsque je souhaite quitter mon programme sur une erreur, alors je fais un print pour ma sortie standard et un die pour ma sortie d'erreur et pour arrêter mon script.

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

Discussions similaires

  1. [XSLT 1.0] Conserver l'ordre des éléments
    Par med.k dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/09/2013, 18h06
  2. [9.0] Conserver l'ordre des enregistrements dans une requête
    Par mcdelay dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 27/08/2013, 12h59
  3. Redirection des sorties standards dans JTextArea
    Par somnix dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/12/2012, 10h26
  4. Gestion des sorties standards et d'erreurs en Perl/Tk
    Par djibril dans le forum Interfaces Graphiques
    Réponses: 14
    Dernier message: 25/11/2009, 17h34

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