.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 2006 Jens Axboe .\" and Copyright (C) 2006 Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tee 2 "3 mai 2023" "Pagini de manual de Linux 6.05.01" .SH NUME tee \- duplică conținutul conductelor .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#define _GNU_SOURCE\fP /* Consultați feature_test_macros(7) */ \fB#include \fP .PP \fBssize_t tee(int \fP\fIfd_in\fP\fB, int \fP\fIfd_out\fP\fB, size_t \fP\fIlen\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .\" Return type was long before glibc 2.7 .SH DESCRIERE .\" Example programs http://brick.kernel.dk/snaps .\" .\" .\" add a "tee(in, out1, out2)" system call that duplicates the pages .\" (again, incrementing their reference count, not copying the data) from .\" one pipe to two other pipes. \fBtee\fP() duplică până la \fIlen\fP octeți de date din conducta la care se referă descriptorul de fișier \fIfd_in\fP în conducta la care se referă descriptorul de fișier \fIfd_out\fP. Nu consumă datele care sunt duplicate din \fIfd_in\fP; prin urmare, datele respective pot fi copiate de un \fBsplice\fP(2) subsecvent. .PP \fIflags\fP este o mască de biți care se compune prin combinarea prin OR împreună cu zero sau mai multe dintre următoarele valori: .TP 1.9i \fBSPLICE_F_MOVE\fP În prezent nu are efect pentru \fBtee\fP(); a se vedea \fBsplice\fP(2). .TP \fBSPLICE_F_NONBLOCK\fP Nu blochează operațiile de In/Ieș; a se vedea \fBsplice\fP(2) pentru mai multe detalii. .TP \fBSPLICE_F_MORE\fP Currently has no effect for \fBtee\fP(), but may be implemented in the future; see \fBsplice\fP(2). .TP \fBSPLICE_F_GIFT\fP Neutilizat pentru \fBtee\fP(); a se vedea \fBvmsplice\fP(2). .SH "VALOAREA RETURNATĂ" La finalizarea cu succes, \fBtee\fP() 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 \fIfd_in\fP. .PP În caz de eroare, \fBtee\fP() returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEAGAIN\fP \fBSPLICE_F_NONBLOCK\fP a fost specificat în \fIfanioane\fP sau unul dintre descriptorii de fișiere a fost marcat ca neblocant (\fBO_NONBLOCK\fP)\fB,\fP și operația s\-ar putea bloca. .TP \fBEINVAL\fP \fIfd_in\fP sau \fIfd_out\fP nu se referă la o conductă; sau \fIfd_in\fP și \fIfd_out\fP se referă la aceeași conductă. .TP \fBENOMEM\fP Memorie insuficientă. .SH STANDARDE Linux. .SH ISTORIC Linux 2.6.17, glibc 2.5. .SH NOTE Din punct de vedere conceptual, \fBtee\fP() copiază datele între cele două conducte. În realitate, nu are loc nicio copiere reală de date: sub acoperire, \fBtee\fP() atribuie date la ieșire prin simpla preluare a unei referințe la intrare. .SH EXEMPLE Exemplul de mai jos implementează un program de bază \fBtee\fP(1) utilizând apelul de sistem \fBtee\fP(). Iată un exemplu de utilizare a acestuia: .PP .in +4n .EX $ \fBdate | ./a.out out.log | cat\fP Tue Oct 28 10:06:00 CET 2014 $ \fBcat out.log\fP Tue Oct 28 10:06:00 CET 2014 .EE .in .SS "Sursa programului" .\" SRC BEGIN (tee.c) \& .EX #define _GNU_SOURCE #include #include #include #include #include #include \& int main(int argc, char *argv[]) { int fd; ssize_t len, slen; \& if (argc != 2) { fprintf(stderr, "Utilizare: %s \en", 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); } .EE .\" SRC END .SH "CONSULTAȚI ȘI" \fBsplice\fP(2), \fBvmsplice\fP(2), \fBpipe\fP(7) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .