Man page - tee(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

tee

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
STANDARDS
HISTORIQUE
NOTES
EXEMPLES
Source du programme
VOIR AUSSI
TRADUCTION

NOM

tee - Dupliquer le contenu d’un tube

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <fcntl.h>

ssize_t tee(int fd_in , int fd_out , size_t len , unsigned int flags );

DESCRIPTION

tee () duplique jusqu’à len octets de donnĂ©es du tube auquel le descripteur de fichier fd_in fait rĂ©fĂ©rence vers le tube rĂ©fĂ©rencĂ© par fd_out . Il ne supprime pas les donnĂ©es qui sont dupliquĂ©es depuis fd_in ; ces donnĂ©es peuvent donc ĂȘtre copiĂ©es par un futur appel Ă  splice (2).

L’argument flags est un masque de bits constituĂ© par un OU binaire entre une ou plusieurs des valeurs suivantes :

SPLICE_F_MOVE

N’a pas d’effet pour tee () actuellement ; consultez splice (2).

SPLICE_F_NONBLOCK

Ne pas bloquer pendant les entrées-sorties ; consultez splice (2) pour plus de détails.

SPLICE_F_MORE

N’a pas d’effet pour tee () actuellement, mais pourrait ĂȘtre implĂ©mentĂ© un jour ; consultez splice (2).

SPLICE_F_GIFT

Inutilisé pour tee () ; consultez vmsplice (2).

VALEUR RENVOYÉE

En cas de succĂšs, tee () renvoie le nombre d’octets dupliquĂ©s entre les tubes d’entrĂ©e et de sortie. La valeur de retour 0 signifie qu’il n’y avait aucune donnĂ©e Ă  transfĂ©rer, et que bloquer n’aurait pas de sens car il n’y a aucun Ă©crivain connectĂ© Ă  l’extrĂ©mitĂ© d’écriture du tube rĂ©fĂ©rencĂ© par fd_in .

En cas d’erreur, tee () renvoie -1 et errno est dĂ©fini pour prĂ©ciser l’erreur.

ERREURS

EAGAIN

SPLICE_F_NONBLOCK Ă©tait indiquĂ© dans flags ou un des descripteurs de fichier a Ă©tĂ© marquĂ© comme non bloquant ( O_NONBLOCK ), et l’opĂ©ration pourrait bloquer.

EINVAL

fd_in ou fd_out ne correspond pas Ă  un tube ; ou bien fd_in et fd_out font rĂ©fĂ©rence au mĂȘme tube.

ENOMEM

Plus assez de mémoire.

STANDARDS

Linux.

HISTORIQUE

Linux 2.6.17, glibc 2.5.

NOTES

Conceptuellement, tee () copie les donnĂ©es entre deux tubes. En fait, il n’y a pas de rĂ©elle copie de donnĂ©es : sous cette apparence, tee () attache les donnĂ©es au tube de sortie en prenant simplement une rĂ©fĂ©rence sur les donnĂ©es en entrĂ©e.

EXEMPLES

L’exemple suivant implĂ©mente une version basique du programme tee (1) en utilisant l’appel systĂšme tee (). Voici un exemple de cette utilisation :

$ date | ./a.out out.log | cat
Tue Oct 28 10:06:00 CET 2014
$ cat out.log
Tue Oct 28 10:06:00 CET 2014

Source du programme

#define _GNU_SOURCE
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
int fd;
ssize_t len, slen;
if (argc != 2) {
fprintf(stderr, "Utilisation : %s <fichier>\n", argv[0]);
exit(EXIT_FAILURE);
}
fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
for (;;) {
/*
* Dupliquer l’entrĂ©e standard dans 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);
}
if (len == 0)
break;
/*
* Consommer 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");
exit(EXIT_FAILURE);
}
len -= slen;
}
}
close(fd);
exit(EXIT_SUCCESS);
}

VOIR AUSSI

splice (2), vmsplice (2), pipe (7)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .