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
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 ; }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 $ ./test 2190 $ ./test | more 11B0 $ ./test > brol 81A4 $ ./test > /dev/null 21B6 $ mkfifo fifo ; cat < fifo & $ ./test > fifo 11A4
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 */
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager