Flash Notes
Interpréteur de commandes - Redirection de la sortie standard et de la sortie standard d'erreurs
• Comment afficher des messages sur stdout et stderr depuis un programme C ?
Solution
Utiliser printf() et fprintf()
Programme
/* Programme out_err.c */
#include <stdio.h>
int main()
{
printf("STDOUT\n");
fprintf(stderr, "STDERR\n");
return 0;
}
Exemple 1
$ out_err STDOUT STDERR
• Comment rediriger les sorties vers des fichiers differents ?
Solution
Utiliser > et 2>
Exemple 1
$ out_err > /tmp/out 2> /tmp/err $ cat /tmp/out STDOUT $ cat /tmp/err STDERR
• Comment rediriger les sorties vers le même fichier ?
Solution
Utiliser > puis 2>&1
Exemple 1
$ out_err > /tmp/out_err.out 2>&1 $ cat /tmp/out_err.out STDERR STDOUT
• Comment faire pour que les messages affichés sur stdout et stderr apparaissent dans le même ordre à l'écran et dans le fichier lorsqu'ils sont redirigés ?
Solution
Utiliser setvbuf() dans le programme C
Programme
/* Programme out_err_nbuf.c */
#include <stdio.h>
int main()
{
setvbuf(stdout, (char *) 0, _IONBF, 0);
printf("STDOUT\n");
fprintf(stderr, "STDERR\n");
return 0;
}
Exemple 1
$ out_err_nbuf > /tmp/out_err_nbuf.out 2>&1 $ cat /tmp/out_err_nbuf.out STDOUT STDERR