Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
readv, writev - czytanie lub zapisywanie danych do wielu buforow
SK/LADNIA
#include <sys/uio.h>
ssize_t readv(int fd, const struct iovec *vector, int count);
ssize_t writev(int fd, const struct iovec *vector, int count);
OPIS
Funkcja readv() czyta liczb count blokow z pliku skojarzonego z
desktyptorem pliku fd do wielu buforow opisanych przez wektor vector.
Funkcja writev() zapisuje co najwyej count blokow opisanych przez
wektor vector do pliku skojarzonego z deskryptorem pliku fd.
Wskanik vector prowadzi do struktury struct iovec zdefiniowanej w pliku
<sys/uio.h> nastpujco:
struct iovec {
void *iov_base; /* Adres pocztkowy */
size_t iov_len; /* Liczba bajtow */
};
Bufory s przetwarzane w kolejnoci, w jakiej zostaly podane.
Funkcja readv() dziala tak samo jak read(2) z t ronic, e wypelnianych
jest wiele buforow.
Funkcja writev() dziala tak samo jak write(2) z t ronic, e zapisywane
dane pochodz z wielu buforow.
WARTO ZWRACANA
Gdy si powiod, funkcja readv() zwraca liczb przeczytanych bajtow, a
funkcja writev() zwraca liczb bajtow zapisanych. W przypadku bldu
zwracane jest -1 i odpowiednio jest ustawiona zmienna errno.
B/LDY
Zwracane bldy s takie same, jak w przypadku funkcji read(2) i
write(2). Dodatkowo zdefiniowany jest nastpujcy bld:
EINVAL Suma wartoci iov_len przekracza rozmiar ssize_t. Albo liczba
count wektorow jest mniejsza ni zero lub wiksza ni dopuszczalne
maksimum.
ZGODNE Z
4.4BSD (funkcje readv() i writev() pocztkowo pojawily si w 4.2BSD),
Unix98, POSIX 1003.1-2001. libc5 w Linuksie uywala size_t jako typ
parametru count oraz int jako typ wartoci zwracanej przez te funkcje.
UWAGI DOTYCZCE IMPLEMENTACJI POD LINUKSEM
Standard SUSv3 dopuszcza, aby implementacja wprowadzila ograniczenia na
liczb rekordow przekazywanych w parametrze vector. Limit ten jest
okrelony jako warto IOV_MAX w <limits.h>, a w czasie dzialania
programu - jako warto zwracana przez wywolanie sysconf(_SC_IOV_MAX).
Pod Linuksem limit okrelony przez te mechanizmy wynosi 1024, co jest
prawdziwym ograniczeniem jdra Linuksa. Jednake funkcje glibc wykonuj
pewne dodatkowe dzialania po wykryciu, e odpowiednie wywolanie
systemowe zakoczylo si bldem z powodu przekroczenia limitu. W takim
wypadku funkcja readv() bibloteki glibc przydziela tymczasowy bufor,
wystarczajco duy, by pomieci wszystkie elementy okrelone przez vector,
przekazuje ten bufor wywolaniu systemowemu read(), kopiuje dane z
bufora tymczasowego do lokalizacji okrelonych przez vector, a nastpnie
zwalnia pami bufora. Funkcja glibc dla writev() wykonuje analogiczne
zadanie uywajc bufora tymczasowego i wywolania funkcji write().
B/LDY
Nie jest zalecane mieszanie wywola funkcji operujcych na deskryptorach
plikow, takich jak readv() czy writev(), z funkcjami biblioteki stdio;
rezultaty takiego mieszania nie s okrelone i najprawdopodobniej nie bd
zgodne z oczekiwaniami.
ZOBACZ TAKE
read(2), write(2)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.
2002-10-17 READV(2)