Rechercher une page de manuel
read
Langue: pl
Version: 1997-07-12 (openSuse - 09/10/07)
Section: 2 (Appels système)
NAZWA
read - odczyt z deskryptora plikuSK£ADNIA
#include <unistd.h> ssize_t read(int fd, void *buf, size_t count);
OPIS
read() próbuje odczytaæ maksymalnie count bajtów z deskryptora plików fd do bufora, którego pocz±tek znajduje siê w buf.Je¶li count jest równe zero, read() zwraca zero i nic wiêcej siê nie dzieje. Je¶li count jest wiêksze ni¿ SSIZE_MAX, wynik jest nieokre¶lony.
WARTO¦Æ ZWRACANA
Po pomy¶lnym zakoñczeniu zwracana jest liczba odczytanych bajtów (zero oznacza koniec pliku), oraz o tê warto¶æ przesuwana jest pozycja w pliku. Nie jest b³êdem, je¶li liczba ta jest mniejsza ni¿ liczba ¿±danych bajtów; mo¿e siê to zdarzyæ np. poniewa¿ chwilowo dostêpnych jest mniej bajtów (mo¿e z powodu blisko¶ci koñca plików, a mo¿e z powodu czytania z potoku lub z terminala), lub poniewa¿ read() zosta³o przerwane sygna³em. Po b³êdzie zwracane jest -1 i odpowiednio ustawiane errno. W tym wypadku nie jest okre¶lone czy pozycja w pliku siê zmieni.B£ÊDY
- EINTR
- Wywo³anie zosta³o przerwane sygna³em przed odczytaniem danych.
- EAGAIN
- Przy u¿yciu O_NONBLOCK wybrano nieblokuj±ce we/wy, a nie ma akurat danych dostêpnych do odczytania natychmiast.
- EIO
- B³±d we/wy. Zdarza siê to na przyk³ad, gdy proces jest w grupie procesów t³a próbuje czytaæ z kontroluj±cego tty, i blokuje lub ignoruje sygna³ SIGTTIN, lub jego grupa procesów jest osierocona. Mo¿e siê to równie¿ zdarzyæ, gdy wyst±pi niskopoziomowy b³±d we/wy podczas odczytu z dysku lub ta¶my.
- EISDIR
- fd odnosi siê do katalogu.
- EBADF
- fd nie jest prawid³owym deskryptorem pliku, lub nie jest otwarty dla odczytu.
- EINVAL
- fd wskazuje na obiekt nieodpowiedni do odczytu.
- EINVAL
- fd jest skojarzony z obiektem, który nie jest odpowiedni dla odczytu.
- EFAULT
- buf wskazuje poza dostêpn± dla u¿ytkownika przestrzeñ adresow±.
Mog± siê pojawiæ inne b³êdy, zale¿nie od obiektu skojarzonego z fd. POSIX zezwala by read którego przerwano po odczytaniu fragmentu danych zwróci³ -1 (z errno ustawionym na EINTR) lub by zwróæi³ ilo¶æ odczytanych bajtów.
ZGODNE Z
SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3OGRANICZENIA
Na systemach plików NFS, odczytanie niewielkiej ilo¶ci danych spowoduje uaktualnienie znacznika czasu tylko za pierwszym razem. Nastêpne wywo³ania tego nie uczyni±. Jest to zwi±zana z buforowaniem atrybutów po stronie klienta, gdy¿ wiêkszo¶æ (je¿eli nie wszystkie) klienty NFS pozostawiaj± uaktualnianie atime serwerowi, a odczyty po stronie klienta, odbywaj±ce siê z buforów klienta nie spowoduj± uaktualnienia atime na serwerze, gdy¿ nie ma wówczas odczytów po stronie serwera. Semantykê UNIX-a mo¿na uzyskaæ poprzez wy³±czenie buforowania atrybutów po stronie klienta. Jednak¿e, w wiêkszo¶ci przypadków spowoduje to istotny wzrost obci±¿enia serwera i zmniejszy wydajno¶æ.Wiele systemów plików i dysków jest uwa¿ane za dostatecznie szybkie, aby implementacja O_NONBLOCK by³a uwa¿ana za zbêdn±. Tak wiêc, O_NONBLOCK mo¿e nie byæ dostêpne dla plików i/lub dysków.
ZOBACZ TAK¯E
close(2), fcntl(2), ioctl(2), lseek(2), readdir(2), readlink(2), select(2), write(2), fread(3)Contenus ©2006-2023 Benjamin Poulain
Design ©2006-2023 Maxime Vantorre