.\" -*- coding: UTF-8 -*- .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\" This man page is Copyright (C) 1998 Pawel Krawczyk. .\" .\" $Id: sendfile.2,v 1.5 1999/05/18 11:54:11 freitag Exp $ .\" 2000-11-19 bert hubert : in_fd cannot be socket .\" .\" 2004-12-17, mtk .\" updated description of in_fd and out_fd for 2.6 .\" Various wording and formatting changes .\" .\" 2005-03-31 Martin Pool mmap() improvements .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH sendfile 2 "15 iulie 2023" "Pagini de manual de Linux 6.05.01" .SH NUME sendfile \- transferă date între descriptori de fișiere .SH BIBLIOTECA Biblioteca C standard (\fIlibc\fP, \fI\-lc\fP) .SH REZUMAT .nf \fB#include \fP .PP .\" The below is too ugly. Comments about glibc versions belong .\" in the notes, not in the header. .\" .\" .B #include .\" .B #if (__GLIBC__==2 && __GLIBC_MINOR__>=1) || __GLIBC__>2 .\" .B #include .\" #else .\" .B #include .\" .B /* No system prototype before glibc 2.1. */ .\" .BI "ssize_t sendfile(int" " out_fd" ", int" " in_fd" ", off_t *" \ .\" offset ", size_t" " count" ) .\" .B #endif .\" \fBssize_t sendfile(int\fP\fI out_fd\fP\fB, int\fP\fI in_fd\fP\fB, off_t *_Nullable \fP\fIoffset\fP\fB,\fP \fB size_t\fP\fI count\fP\fB);\fP .fi .SH DESCRIERE \fBsendfile\fP() copiază date între un descriptor de fișier și altul. Deoarece această copiere se face în interiorul nucleului, \fBsendfile\fP() este mai eficient decât combinația dintre \fBread\fP(2) și \fBwrite\fP(2), care ar necesita transferul de date către și din spațiul utilizatorului. .PP \fIin_fd\fP trebuie să fie un descriptor de fișier deschis pentru citire, iar \fIout_fd\fP trebuie să fie un descriptor deschis pentru scriere. .PP Dacă \fIoffset\fP nu este NULL, atunci indică o variabilă care conține poziția fișierului de la care \fBsendfile\fP() va începe să citească datele din \fIin_fd\fP. La returnarea lui \fBsendfile\fP(), această variabilă va fi stabilită la poziția octetului care urmează ultimului octet citit. Dacă \fIoffset\fP nu este NULL, atunci \fBsendfile\fP() nu modifică poziția în fișier a lui \fIin_fd\fP; în caz contrar, poziția în fișier este ajustată pentru a reflecta numărul de octeți citiți din \fIin_fd\fP. .PP Dacă \fIoffset\fP este NULL, atunci datele vor fi citite din \fIin_fd\fP începând de la poziția fișierului, iar poziția fișierului va fi actualizată de apel. .PP \fIcount\fP este numărul de octeți care trebuie copiați între descriptorii de fișiere. .PP Argumentul \fIin_fd\fP trebuie să corespundă unui fișier care acceptă operații de tip \fBmmap\fP(2) (adică nu poate fi un soclu). .PP Înainte de Linux 2.6.33, \fIout_fd\fP trebuie să se refere la un soclu. Începând cu Linux 2.6.33, poate fi vorba de orice fișier. Dacă este un fișier obișnuit, atunci \fBsendfile\fP() modifică în mod corespunzător poziția fișierului. .SH "VALOAREA RETURNATĂ" În cazul în care transferul a avut succes, se returnează numărul de octeți scriși în \fIout_fd\fP. Rețineți că un apel reușit la \fBsendfile\fP() poate scrie mai puțini octeți decât cei solicitați; apelantul trebuie să fie pregătit să reia apelul în cazul în care există octeți care nu au fost trimiși. A se vedea, de asemenea, secțiunea NOTE. .PP În caz de eroare, se returnează \-1, iar \fIerrno\fP este configurată pentru a indica eroarea. .SH ERORI\-IEȘIRE .TP \fBEAGAIN\fP Ieșirea/ieșirea fără blocare a fost selectată folosind \fBO_NONBLOCK\fP și scrierea s\-ar bloca. .TP \fBEBADF\fP Fișierul de intrare nu a fost deschis pentru citire sau fișierul de ieșire nu a fost deschis pentru scriere. .TP \fBEFAULT\fP Adresă incorectă. .TP \fBEINVAL\fP Descriptorul nu este valid sau blocat, sau o operație de tip \fBmmap\fP(2) nu este disponibilă pentru \fIin_fd\fP, sau \fIcount\fP este negativ. .TP \fBEINVAL\fP \fIout_fd\fP are activat fanionul \fBO_APPEND\fP. În prezent, acest lucru nu este acceptat de \fBsendfile\fP(). .TP \fBEIO\fP Eroare nespecificată în timpul citirii din \fIin_fd\fP. .TP \fBENOMEM\fP Memorie insuficientă pentru a citi din \fIin_fd\fP. .TP \fBEOVERFLOW\fP \fIcount\fP este prea mare, operația ar duce la depășirea dimensiunii maxime a fișierului de intrare sau a fișierului de ieșire. .TP \fBESPIPE\fP \fIoffset\fP nu este NULL, dar fișierul de intrare nu poate fi explorat. .SH VERSIUNI Alte sisteme UNIX implementează \fBsendfile\fP() cu o semantică și prototipuri diferite. Acesta nu ar trebui să fie utilizat în programele portabile. .SH STANDARDE Niciunul. .SH ISTORIC Linux 2.2, glibc 2.1. .PP În Linux 2.4 și versiunile anterioare, \fIout_fd\fP se putea referi, de asemenea, la un fișier obișnuit; această posibilitate a dispărut în seria de nuclee Linux 2.6.x, dar a fost restabilită în Linux 2.6.33. .PP Apelul de sistem original Linux \fBsendfile\fP() nu a fost conceput pentru a gestiona poziții din fișiere mari. În consecință, Linux 2.4 a adăugat \fBsendfile64\fP(), cu un tip mai larg pentru argumentul \fIoffset\fP. Funcția de învăluire glibc \fBsendfile\fP() se ocupă în mod transparent de diferențele din nucleu. .SH NOTE .\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69 \fBsendfile\fP() va transfera cel mult 0x7ffff000 (2,147,479,552) octeți, returnând numărul de octeți transferați efectiv; (acest lucru este valabil atât pe sistemele pe 32 de biți, cât și pe cele pe 64 de biți). .PP Dacă intenționați să utilizați \fBsendfile\fP() pentru a trimite fișiere către un soclu TCP, dar trebuie să trimiteți unele date de antet înainte de conținutul fișierului, veți găsi utilă utilizarea opțiunii \fBTCP_CORK\fP, descrisă în \fBtcp\fP(7), pentru a minimiza numărul de pachete și pentru a regla performanța. .PP Este posibil ca aplicațiile să dorească să revină la \fBread\fP(2) și \fBwrite\fP(2) în cazul în care \fBsendfile\fP() eșuează cu \fBEINVAL\fP sau \fBENOSYS\fP. .PP În cazul în care \fIout_fd\fP se referă la un soclu sau la o conductă cu suport de copiere zero, apelanții trebuie să se asigure că porțiunile transferate din fișierul la care face referire \fIin_fd\fP rămân nemodificate până când cititorul de la celălalt capăt al \fIout_fd\fP a consumat datele transferate. .PP Apelul \fBsplice\fP(2), specific Linux, permite transferul de date între descriptori de fișiere arbitrari, cu condiția ca unul (sau amândoi) dintre ei să fie o conductă. .SH "CONSULTAȚI ȘI" \fBcopy_file_range\fP(2), \fBmmap\fP(2), \fBopen\fP(2), \fBsocket\fP(2), \fBsplice\fP(2) .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 .