Man page - tee(2)

Packages contains this manual

Available languages:

en fr pl ja ru ro

Manual

tee

NUME
BIBLIOTECA
SINOPSIS
DESCRIERE
VALOAREA RETURNATĂ
ERORI-IEȘIRE
STANDARDE
ISTORIC
NOTE
EXEMPLE
Sursa programului
CONSULTAȚI ȘI
TRADUCERE

NUME

tee - duplică conținutul conductelor

BIBLIOTECA

Biblioteca C standard ( libc , -lc )

SINOPSIS

#define _GNU_SOURCE /* Consultați feature_test_macros(7) */
#include <fcntl.h>

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

DESCRIERE

tee () duplică până la len octeți de date din conducta la care se referă descriptorul de fișier fd_in în conducta la care se referă descriptorul de fișier fd_out . Nu consumă datele care sunt duplicate din fd_in ; prin urmare, datele respective pot fi copiate de un splice (2) subsecvent.

flags este o mască de biți care se compune prin combinarea prin OR împreună cu zero sau mai multe dintre următoarele valori:

SPLICE_F_MOVE

În prezent nu are efect pentru tee (); a se vedea splice (2).

SPLICE_F_NONBLOCK

Nu blochează operațiile de In/Ieș; a se vedea splice (2) pentru mai multe detalii.

SPLICE_F_MORE

Currently has no effect for tee (), but may be implemented in the future; see splice (2).

SPLICE_F_GIFT

Neutilizat pentru tee (); a se vedea vmsplice (2).

VALOAREA RETURNATĂ

La finalizarea cu succes, tee () returnează numărul de octeți care au fost duplicați între intrare și ieșire. O valoare de returnare 0 înseamnă că nu a existat nici un transfer de date și nu ar avea sens să se blocheze, deoarece nu există scriitori conectați la capătul de scriere al conductei la care face referire fd_in .

În caz de eroare, tee () returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EAGAIN

SPLICE_F_NONBLOCK a fost specificat în fanioane sau unul dintre descriptorii de fișiere a fost marcat ca neblocant ( O_NONBLOCK ) , și operația s-ar putea bloca.

EINVAL

fd_in sau fd_out nu se referă la o conductă; sau fd_in și fd_out se referă la aceeași conductă.

ENOMEM

Memorie insuficientă.

STANDARDE

Linux.

ISTORIC

Linux 2.6.17, glibc 2.5.

NOTE

Din punct de vedere conceptual, tee () copiază datele între cele două conducte. În realitate, nu are loc nicio copiere reală de date: sub acoperire, tee () atribuie date la ieșire prin simpla preluare a unei referințe la intrare.

EXEMPLE

Exemplul de mai jos implementează un program de bază tee (1) utilizând apelul de sistem tee (). Iată un exemplu de utilizare a acestuia:

$ 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

Sursa programului

#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, "Utilizare: %s <fișier>\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 (;;) {
/*
* tee „stdin” la „stdout”.
*/
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;
/*
* Consumă „stdin” prin introducerea acesteia într-un fișier.
*/
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);
}

CONSULTAȚI ȘI

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

TRADUCERE

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net .