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

Linux Discussion :

Séquence d'échappement et redirection de flux


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut Séquence d'échappement et redirection de flux
    Bonjour,

    ca fait un petit moment que je tente de conserver la sortie de mon programme tout en colorant cette dernière dans un shell mais je n'y arrive pas.
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char* argv[])
    {
        cout << "\033[32m" << "Salut" << endl;
        return 0;
    }
    Affiche "Salut" en vert.
    Problème: si je redirige le flux vers un fichier par exemple, les caractères d'échappements sont copiés avec:
    file contient:
    En fait, j'aimerai copier le fonctionement de grep qui colore la sortie tout en la laissant exploitable si on redirige cette dernière. (j'ai essayé de voir comment grep fonctionne mais je me suis perdu en court de route ... pas très facile de lire un programme GNU...)

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Je ne connais pas le fonctionnement de grep, mais le plus simple à mon sens pour faire cela est d'analyser le type de stdout. Typiquement, si
    est vrai, alors tu peux balancer tes ANSI escape sequences, autrement non. Le mieux étant de faire une fonction wrapper (ou mieux si ça existe en C++ car je ne connais pas ce langage).

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 692
    Par défaut
    Bonjour,

    J'ai exactement le même problème mais c'est pour un script bash.
    Existe-il un équivalent a isatty() sur les linux/Unix standards que je puisse utiliser en bash?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 2
    Par défaut
    @nicolas.sitbon > En plein dans le mille, merci. Il s'agit bien de isatty. Grep fait comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isatty(STDOUT_FILENO) && getenv("TERM") && strcmp(getenv("TERM"), "dumb"))
    {
        // afficher sequences
    }
    Par contre pour que ce soit portable(relatif puisque les séquences ne sont pas reconnues sur tous les terminaux), il va falloir que j'y aille à grand coups de defines.

    @Uther > Si vous êtes courageux, regardez la source de scripts qui intègrent déjà cette fonctionnalité (yaourt de archlinux par exemple doit gérer cela non ?).

  5. #5
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Metalspy Voir le message
    Par contre pour que ce soit portable(relatif puisque les séquences ne sont pas reconnues sur tous les terminaux), il va falloir que j'y aille à grand coups de defines.
    Pour que ce soit portables et éviter d'y aller à grands coups de defines comme tu dis, tu n'as qu'à te tourner vers l'extension CURSES de la norme SUSv2:
    http://opengroup.org/onlinepubs/007908775/cursesix.html

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

Discussions similaires

  1. Redirection de flux clavier
    Par TrEiZe85 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/10/2007, 23h21
  2. Redirection de flux
    Par Fluxy dans le forum Windows
    Réponses: 2
    Dernier message: 29/05/2007, 19h50
  3. redirection de flux console
    Par xolytem dans le forum C++
    Réponses: 4
    Dernier message: 02/02/2007, 12h24
  4. Redirection du flux d'entree sous linux
    Par Fl4mBy dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 30/08/2005, 15h49
  5. [reseaux] redirection de flux
    Par Olive1808 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 12/08/2002, 09h24

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