Manpages

NAAM

read − lees van een bestandindicator

OVERZICHT

#include <unistd.h>

ssize_t read(int bi, void *buf, size_t tel);

BESCHRIJVING

read() Probeert tot aan tel bytes van bestandsindicator bi in te lezen naar de buffer buf.

Als tel nul is geeft read() nul terug zonder andere gevolgen. Als tel groter is dan SSIZE_MAX, is het resultaat onbepaald.

EIND WAARDE

Bij success wordt het aantal gelezen bytes teruggegeven (nul betekend einde van het bestand); de positie in het bestand wordt met dit aantal vooruitgezet. Het is niet fout als dat aantal kleiner is dan het gevraagde aantal bytes, dat kan bijvoorbeeld gebeuren als er minder bytes voorhanden zijn op dat ogenblik (wellicht omdat we dicht bij eind-van-bestand zijn, omdat we van een pijp {pipe} lezen, of van een terminal, of omdat read() onderbroken werd door een signaal). Bij falen wordt −1 teruggegeven, en errno wordt naar behoren gezet. In dit geval is het onbepaald gelaten of de plaats in het bestand (als die bestaat) veranderd.

FOUTEN

EINTR

{onderbroken} De aanroep werd onderbroken door een signaal voordat er gegevens werden gelezen.

EAGAIN

{opnieuw} Niet-blokkerende In/Uit werd gekozen met O_NONBLOCK {niet blokkeren} maar er stonden niet onmiddelijk gegevens klaar om gelezen te worden.

EIO

{In/Uit} In/Uit fout. Dit gebeurd bijvoorbeeld als een proces uit een achtergrond-proces-groep probeert van zijn controlerende tty te lezen en, òf het negeert/blokkeert SIGTTIN, òf zijn proces-groep is verweesd {orphaned}. Het kan ook optreden als er een laag-niveau In/Uit fout is terwijl er van schijf of tape gelezen wordt.

EISDIR

{is dir} bi wijst naar een directorie

EBADF

{slecht bestand} bi Is geen geldige bestandsindicator, of is niet open voor lezen.

EINVAL

{ongeldig} bi wijst naar iets dat ongeschikt is om van te lezen

EFAULT

{fout} buf Ligt buiten de door u toegankelijke adres ruimte.

Andere fouten kunnen ontstaan, afhankelijk van waar bi mee verbonden is. POSIX Staat een read() die onderbroken wordt na het lezen van enige gegevens toe om −1 terug te geven (met errno gezet naar EINTR); of om het aantal gelezen bytes terug te geven.

VOLDOET AAN

SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

BEPERKINGEN

Bij NFS bestandsystemen zal het lezen van kleine hoeveelheden gegevens de tijdtempel alleen de eerste keer veranderen, volgende aanroepen laten de tijdtempel onveranderd. Dit wordt veroorzaakt door cliënt-kant bufferen van bestand-kenmerken: de meeste -zo niet alle- NFS cliënten laten het bijwerken van de ’atime’ {toegangstijd} aan de server over; als een lees-opdracht dan genoeg heeft aan de cliënt-kant buffer vind er geen lees-opdracht plaats naar de server en blijft de atime dus onveranderd. UNIX Gedrag kan verkregen worden door het kenmerken bufferen in de cliënt uit te schakelen, maar dat zal in de meeste situaties de last op de server flink vergroten, en zijn uitvoering nadelig beïnvloeden.

ZIE OOK

close(2) {sluiten}, fcntl(2) {manipuleer bi}, ioctl(2) {in/uit-manipuleren}, lseek(2) {zoek}, readdir(2) {lees dir}, readlink(2) {lees koppeling}, select(2) {kies}, write(2) {schrijf}, fread(3) {lees}

VERTALING

Dit is een handleiding uit manpages-dev 1.34. Alles wat tussen ’{’..’}’ staat is aanvullende vertaling, en hoort niet bij de originele handleiding. Email naar <manpages-nl [AT] nl.org>.

$Id: read.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $