.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2009-2015 Michael Kerrisk, .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified Sat Jul 24 00:06:00 1993 by Rik Faith .\" Modified Wed Jan 17 16:02:32 1996 by Michael Haardt .\" .\" Modified Thu Apr 11 19:26:35 1996 by Andries Brouwer .\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer .\" Modified Fri Jan 31 16:47:33 1997 by Eric S. Raymond .\" Modified Sat Jul 12 20:45:39 1997 by Michael Haardt .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH read 2 "3 april 2023" "Linux man\-pagina's 6.05.01" .SH NAAM read \- lees van een bestandbeschrijving .SH BIBLIOTHEEK Standard C bibliotheek (\fIlibc\fP, \fI\-lc\fP) .SH SAMENVATTING .nf \fB#include \fP .PP \fBssize_t read(int \fP\fIfd\fP\fB, void \fP\fIbuf\fP\fB[.\fP\fItel\fP\fB], size_t \fP\fItel\fP\fB);\fP .fi .SH BESCHRIJVING \fBread\fP() probeert tot aan \fItel\fP bytes van bestandsbeschrijving \fIbes_ind\fP in te lezen naar de buffer \fIbuf\fP. .PP In bestanden die zoeken ondersteunen begint de lees\-operatie bij de bestandspositie, en wordt de bestandspositie verhoogd met het aantal gelezen bytes. Als de bestandspositie op of voorbij het einde van het bestand staat, dan worden geen bytes gelezen en geeft \fBread\fP() nul terug. .PP Als \fItel\fP nul is, \fIkan\fP \fBread\fP() fouten zoals hieronder beschreven detecteren. In afwezigheid van enige fout, of als \fBread\fP() niet op fouten controleert, zal een \fBread\fP() met een \fItel\fP gelijk 0 een 0 teruggeven en heeft verder geen andere effecten. .PP Volgens POSIX.1 als \fItel\fP groter is dan \fBSSIZE_MAX\fP dan is het resultaat implementatie afhankelijk; zie OPMERKINGEN voor de boven grens op Linux. .SH "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 lezen, of van een terminal, of omdat \fBread\fP() onderbroken werd door een signaal). Zie ook OPMERKINGEN. .PP Bij falen wordt \-1 teruggegeven, en \fIerrno\fP wordt overeenkomstig gezet. In dit geval is niet bepaald of de plaats in het bestand (als die bestaat) veranderd. .SH FOUTEN .TP \fBEAGAIN\fP De bestandsbeschrijving \fIbes_ind\fP refereert naar een ander bestand dan de socket en is gemarkeerd als niet\-blokkerend (\fBO_NONBLOCK\fP, en de \fBread\fP zou blokkeren. Zie \fBopen\fP(2) voor meer details over de \fBO_NONBLOCK\fP vlag. .TP \fBEAGAIN\fP of \fBEWOULDBLOCK\fP .\" Actually EAGAIN on Linux De bestandsbeschrijving \fIbes_ind\fP refereert naar een socket en werd gemarkeerd als niet\-blokkerend (\fBO_NONBLOCK\fP, en de \fBread\fP() zou blokkeren. POSIX.1\-2001 staat toe in dit geval een fout te retourneren en vereist niet dat deze constanten dezelfde waarde hebben, waardoor een overdraagbare applicatie op beide mogelijkheden zou moeten controleren. .TP \fBEBADF\fP \fIbes_ind\fP is geen geldige bestandsbeschrijving, of is niet open voor lezen. .TP \fBEFAULT\fP \fIbuf\fP ligt buiten de door u toegankelijke adres ruimte. .TP \fBEINTR\fP De aanroep werd onderbroken door een signaal voordat enige data werd gelezen; zie \fBsignal\fP(7). .TP \fBEINVAL\fP \fIbes_ind\fP is gekoppeld aan een object dat ongeschikt is om van te lezen; of het bestand werd geopend met de \fBO_DIRECT\fP vlag en ofwel het adres opgegeven in \fIbuf\fP, de waarde opgegeven \fItel\fP of de bestandsplaats is niet goed uitgelijnd. .TP \fBEINVAL\fP \fIbes_ind\fP werd aangemaakt door een aanroep van \fBtimerfd_create\fP(2) en de verkeerde buffer grootte werd meegegeven aan \fBread\fP(); zie \fBtimerfd_create\fP(2) voor meer informatie. .TP \fBEIO\fP Invoer/Uitvoer fout. Dit gebeurd bijvoorbeeld als een proces uit een achtergrond\-proces\-groep probeert van zijn controlerende terminal te lezen en, ofwel het negeert/blokkeert \fBSIGTTIN\fP, ofwel zijn proces\-groep is verweesd. Het kan ook optreden als er een laag\-niveau Invoer/Uitvoer fout is terwijl er van schijf of tape gelezen wordt. Een andere mogelijke oorzaak van \fBEIO\fP op netwerk bestandssystemen is wanneer een geadviseerd lock werd verwijderd van de bestandsbeschrijving en dat die lock verloren raakte. Zie de \fIVerloren locks\fP sectie van \fBfcntl\fP(2) voor meer details. .TP \fBEISDIR\fP \fIbes_ind\fP wijst naar een map. .PP Andere fouten kunnen optreden afhankelijk van dat wat verbonden is met \fIbi\fP. .SH "VOLDOET AAN" POSIX.1\-2008. .SH GESCHIEDENIS SVr4, 4.3BSD, POSIX.1\-2001. .SH OPMERKINGEN .\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69 Op Linux zal \fBread\fP() (en vergelijkbare systeem aanroepen) op zijn hoogst 0x7ffff000 (2,147,479,552) bytes overdragen, en het daadwerkelijk aantal overgedragen bytes retourneren. (Dit is waar op beide 32\-bit en 64\-bit systemen.) .PP Bij NFS bestandssystemen zal het lezen van kleine hoeveelheden gegevens de tijdstempel alleen de eerste keer veranderen, volgende aanroepen laten de tijdstempel onveranderd. Dit wordt veroorzaakt door bufferen van bestandskenmerken aan de zijde van de cliënt: de meeste \-zo niet alle\- NFS cliënten laten het bijwerken van de `atime' 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 bufferen aan de zijde van de cliënt uit te schakelen, maar dat zal in de meeste situaties de last op de server flink vergroten, en zijn prestaties nadelig beïnvloeden. .SH BUGS Volgens POSIX.1\-2008/SUSv4 Sectie XSI 2.9.7 ("Thread interacties met Reguliere Bestand Operaties"): .PP .RS 4 Alle volgende functie zullen onderling atomair zijn voor wat betreft de effecten die in POSIX.1\-2008 gespecificeerd zijn indien ze werken op reguliere bestanden of symbolische koppelingen: ... .RE .PP .\" http://thread.gmane.org/gmane.linux.kernel/1649458 .\" From: Michael Kerrisk (man-pages gmail.com> .\" Subject: Update of file offset on write() etc. is non-atomic with I/O .\" Date: 2014-02-17 15:41:37 GMT .\" Newsgroups: gmane.linux.kernel, gmane.linux.file-systems .\" commit 9c225f2655e36a470c4f58dbbc99244c5fc7f2d4 .\" Author: Linus Torvalds .\" Date: Mon Mar 3 09:36:58 2014 -0800 .\" .\" vfs: atomic f_pos accesses as per POSIX Tussen de achtereenvolgens vermelde API´s staan \fBread\fP() en \fBreadv\fP(2). En tussen de effecten die atomair zouden moeten zijn voor alle threads (en processen) zijn aanpassingen aan de bestandspositie. Echter vóór Linux versie 3.14 was dit niet het geval: als twee processen die een open bestandsindicator delen (zie \fBopen\fP(2)) een \fBread\fP() (of \fBreadv\fP(2)) op hetzelfde tijdstip uitvoeren, dan zijn de Invoer/Uitvoer operaties niet atomair met betrekking tot aanpassen van de bestandspositie, hetgeen erin resulteert dat de lees acties in beide processen (foutief) zou kunnen overlappen in de datablokken die ze zouden verkrijgen. Dit probleem werd opgelost in Linux 3.14. .SH "ZIE OOK" \fBclose\fP(2), \fBfcntl\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2), \fBpread\fP(2), \fBreaddir\fP(2), \fBreadlink\fP(2), \fBreadv\fP(2), \fBselect\fP(2), \fBwrite\fP(2), \fBfread\fP(3) .PP .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blättermann en Luc Castermans . .PP Deze vertaling is vrije documentatie; lees de .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID. .PP Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .