tee | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Section: Manuel du programmeur Linux (2)
Updated: 28 avril 2006
Sommaire
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#define _GNU_SOURCE #include <fcntl.h> long tee(int fd_in, int fd_out, size_t len, unsigned int flags);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
tee() duplique jusqu'à len octets de données à partir du tube référencé par le descripteur de fichier fd_in vers le tube référencé par le descripteur de fichier fd_out. Il ne consomme pas les données dupliquées depuis fd_in ; ainsi, ces données pourront être copiées par un appel ultérieur à splice(2).
flags est une série d'attributs modificateurs dont l'espace de nommage est partagé avec splice(2) et vmsplice(2) :
Actuellement sans effet pour tee() ; voir splice(2).
Ne pas bloquer sur les entrées-sorties ; voir splice(2) pour plus de détails.
Actuellement sans effet pour tee(), mais pourrait être implémenté un jour ; voir splice(2).
Inutilisé pour tee() ; voir vmsplice(2).
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
En cas de réussite, tee() renvoie le nombre d'octets dupliqués entre l'entrée et la sortie. Une valeur de retour nulle signifie qu'il n'y avait aucune donnée à transférer, et que bloquer n'aurait pas de sens étant donné qu'il n'y a pas d'écrivain connecté à l'extrémité écriture du tube référencé par fd_in.
En cas d'erreur, tee() renvoie -1 auquel cas errno contient le code d'erreur.
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
fd_in ou fd_out ne fait pas référence à un tube ; ou bien fd_in et fd_out font référence au même tube.
Pas assez de mémoire.
VERSIONS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Conceptuellement, tee() copie les données entre deux tubes.
En réalité, aucune donnée n'est vraiement copiée : tee() affecte les données à la sortie en prenant une référence sur l'entrée.
EXEMPLE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'exemple suivant implémente une version basique du programme tee(1) en utilisant l'appel système tee().
#define _GNU_SOURCE #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <assert.h> #include <errno.h> #include <limits.h> int main(int argc, char *argv[]) { int fd; int len, slen; assert(argc == 2); fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644); if (fd == -1) { perror("open"); exit(EXIT_FAILURE); } do { /* * dupliquer l'entrée standard sur la sortie standard */ len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); if (len < 0) { if (errno == EAGAIN) continue; perror("tee"); exit(EXIT_FAILURE); } else if (len == 0) break; /* * Consomme l'entrée standard en la raccordant à un fichier */ while (len > 0) { slen = splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); if (slen < 0) { perror("splice"); break; } len -= slen; } } while (1); close(fd); exit(EXIT_SUCCESS); }
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
splice(2), vmsplice(2), feature_test_macros(7)
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 24 octobre 2007 et révisée le 23 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 tee ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EINVAL | ERREURS |
ENOMEM | ERREURS |
SPLICE_F_GIFT | DESCRIPTION |
SPLICE_F_MORE | DESCRIPTION |
SPLICE_F_MOVE | DESCRIPTION |
SPLICE_F_NONBLOCK | DESCRIPTION |