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

C Discussion :

test de stdout


Sujet :

C

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut test de stdout
    Bonjour,

    J'aimerai transcoder un flux avant de l'envoyer vers stdout... Mais si et seulement si le flux n'a pas été détourné dans un fichier. Y a t-il moyen en C de tester si stdout part vers un fichier?

    A+

    Pfeuh

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 939
    Points : 4 360
    Points
    4 360
    Par défaut
    Citation Envoyé par pfeuh Voir le message
    Bonjour,

    J'aimerai transcoder un flux avant de l'envoyer vers stdout... Mais si et seulement si le flux n'a pas été détourné dans un fichier. Y a t-il moyen en C de tester si stdout part vers un fichier?

    A+

    Pfeuh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #include <sys/stat.h>
     
    int main(int argc, char **argv)
    {
    	struct stat	buf ;
     
        if (0 == fstat(1, &buf)) {
    		fprintf(stderr,"%0X\n", buf.st_mode) ;
    	}	
    	return 0 ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $ ./test
    2190
    $ ./test | more
    11B0
    $ ./test > brol
    81A4
    $ ./test > /dev/null
    21B6
    $ mkfifo fifo ; cat < fifo &
    $ ./test > fifo
    11A4
    man 2 stats
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    …
     The status information word st_mode has the following bits:
     
         #define S_IFMT 0170000           /* type of file */
         #define        S_IFIFO  0010000  /* named pipe (fifo) */
         #define        S_IFCHR  0020000  /* character special */
         #define        S_IFDIR  0040000  /* directory */
         #define        S_IFBLK  0060000  /* block special */
         #define        S_IFREG  0100000  /* regular */
         #define        S_IFLNK  0120000  /* symbolic link */
         #define        S_IFSOCK 0140000  /* socket */
         #define        S_IFWHT  0160000  /* whiteout */
         #define S_ISUID 0004000  /* set user id on execution */
         #define S_ISGID 0002000  /* set group id on execution */
         #define S_ISVTX 0001000  /* save swapped text even after use */
         #define S_IRUSR 0000400  /* read permission, owner */
         #define S_IWUSR 0000200  /* write permission, owner */
         #define S_IXUSR 0000100  /* execute/search permission, owner */

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,
    Citation Envoyé par JeitEmgie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #include <sys/stat.h>
     
    int main(int argc, char **argv)
    {
    	struct stat	buf ;
     
        if (0 == fstat(1, &buf)) {
    		fprintf(stderr,"%0X\n", buf.st_mode) ;
    	}	
    	return 0 ;
    }
    Je te remercie beaucoup, j'aurais mis des jours à trouver ça. Pour le reste, j'ai eu peur (je suis sous XP), mais finalement, c'est très lisible et compréhensible.

    A+

    Pfeuh

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Je ne sais pas si tu as ça sous windows, mais dans POSIX il y a la fonction isatty() qui t'indique si un file descriptor est connecté à un TTY.

  5. #5
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par matafan Voir le message
    Je ne sais pas si tu as ça sous windows, mais dans POSIX il y a la fonction isatty() qui t'indique si un file descriptor est connecté à un TTY.
    Merci, je viens de tester, isatty() existe bien sous windows, aussi dans unistd.h

    A+

    Pfeuh

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

Discussions similaires

  1. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38
  2. descripteur stdin stdout
    Par discogarden dans le forum Réseau
    Réponses: 10
    Dernier message: 08/01/2003, 23h25
  3. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 10h57
  4. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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