.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2007 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified Sat Jul 24 13:35:59 1993 by Rik Faith .\" Modified Sun Nov 28 17:19:01 1993 by Rik Faith .\" Modified Sat Jan 13 12:58:08 1996 by Michael Haardt .\" .\" Modified Sun Jul 21 18:59:33 1996 by Andries Brouwer .\" 2001-12-13 added remark by Zack Weinberg .\" 2007-06-18 mtk: .\" Added details about seekable files and file offset. .\" Noted that write() may write less than 'count' bytes, and .\" gave some examples of why this might occur. .\" Noted what happens if write() is interrupted by a signal. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH WRITE 2 "10 oktober 2019" Linux "Linux Programmeurs Handleiding" .SH NAAM write \- schrijf naar een bestandsindicator .SH SAMENVATTING \fB#include \fP .PP \fBssize_t write(int \fP\fIbi\fP\fB, const void *\fP\fIbuf\fP\fB, size_t \fP\fItel\fP\fB);\fP .SH BESCHRIJVING \fBwrite\fP() schrijft tot \fItel\fP bytes naar het bestand waar \fIbi\fP naar wijst, van de buffer die begint op \fIbuf\fP. .PP Het aantal geschreven bytes kan kleiner zijn dan \fItel\fP als bijvoorbeeld er onvoldoende ruimte was op het onderliggende fysieke medium, of als de \fBRLIMIT_FSIZE\fP hulpbron limiet werd bereikt (zie \fBsetrlimit\fP(2)), of als de aanroep werd geïnterrumpeerd door een signaal nadat het minder dan \fItel\fP bytes geschreven had. (Zie ook \fBpipe\fP(7).) .PP In een doorzoekbaar bestand (m.a.w. een op welk \fBlseek\fP(2) toegepast kan worden, bijvoorbeeld een regulier bestand) wordt geschreven aan de bestandspositie, en de positie wordt verhoogd met het daadwerkelijk geschreven aantal bytes. Als het bestand ge\fBopen\fP(2)d werd met \fBO_APPEND\fP. dan wordt de bestandspositie eerst gezet op het einde van het bestand voor schrijven. De aanpassing van de bestandspositie en de schrijf operatie worden in een ondeelbare stap gedaan. .PP POSIX eist dat een \fBread\fP(2) die bewijsbaar na een \fBwrite\fP() plaatsvindt de nieuwe gegevens oplevert. Merk op dat niet alle bestandsystemen voldoen aan POSIX. .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 geschreven bytes teruggegeven (nul betekend niks werd geschreven). Bij falen wordt \-1 teruggegeven en \fIerrno\fP wordt naar behoren gezet. .PP Merk op dat een succesvolle \fBwrite\fP() ook minder dan \fItel\fP bytes kan overdragen. Zulke partiële schrijf resultaten kunnen optreden door diverse redenen; bij voorbeeld, omdat er niet genoeg ruimte op het schijf apparaat was om alle gevraagde bytes te schrijven, of omdat een geblokkeerde \fBwrite\fP() naar een socket, pijp, of vergelijkbaar werd onderbroken door een signaal nadat het enkele, maar voor dat het alle gevraagde bytes had geschreven. Als zulk een partieel schrijf resultaat optreedt dan kan de aanroeper een andere \fBwrite\fP() aanroepen om de resterende bytes over te dragen. Deze aanroep kan de resterende bytes overdragen of resulteren in een fout (b.v. de schijf is nu vol). .PP Als \fItel\fP nul is en \fIbi\fP wijst naar een normaal bestand dan kan \fBwrite\fP() een fout status teruggeven als een van de hieronder gegeven fouten werd gedetecteerd. Als een fouten worden gedetecteerd of fout detectie is niet gedaan, dan wordt 0 teruggegeven zonder enig andere effect te veroorzaken. Als \fItel\fP nul is en \fIbi\fP wijst naar een bestand anders dan een regulier bestand, dan zijn de resultaten onbepaald. .SH FOUTEN .TP \fBEAGAIN\fP De file beschrijving \fIbi\fP wijst naar een ander bestand dan een socket en is gemarkeerd als niet\-blokkerend (\fBO_NONBLOCK\fP), en de schrijf aanroep 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 file beschrijving \fIbi\fP wijst naar een ander bestand dan een socket en is gemarkeerd als niet\-blokkerend (\fBO_NONBLOCK\fP), en de schrijf aanroep zou blokkeren. Zie \fBopen\fP(2) voor meer details over de \fBO_NONBLOCK\fP vlag. POSIX.1\-2001 staat toe in dit geval een fout terug te geven, en vereist niet dat deze constanten dezelfde waarde hebben, daarom moet een overdraagbare applicatie op beide mogelijkheden controleren. .TP \fBEBADF\fP \fIbi\fP is geen geldige bestandsindicator, of is niet open voor lezen. .TP \fBEDESTADDRREQ\fP \fIbi\fP wijst naar een datagram socket waarvoor een gelijk adres niet ingesteld werd gebruikmakend van \fBconnect\fP(2). .TP \fBEDQUOT\fP De quota van de gebruiker van schijf blokken op het bestandssysteem bevattende het bestand aangewezen door \fIbi\fP is opgebruikt. .TP \fBEFAULT\fP \fIbuf\fP ligt buiten de door u toegankelijke adres ruimte. .TP \fBEFBIG\fP Een poging werd ondernomen om een bestand te schrijven dat de implementatie\-bepaalde maximum bestand grootte of een proces bestand grootte limiet overschrijd, of naar een schrijf actie bij een positie voorbij de maximaal toegestane positie. .TP \fBEINTR\fP De aanroep werd onderbroken door een signaal voordat gegevens werden geschreven; zie \fBsignal\fP(7). .TP \fBEINVAL\fP \fIbi\fP is gekoppeld aan een object dat ongeschikt is om naar te schrijven; of het bestand werd geopend met de \fBO_DIRECT\fP vlag, en ofwel het opgegeven adres in \fIbuf\fP, de waarde opgegeven in \fIcount\fP, of de bestandspositie is niet goed opgelijnd. .TP \fBEIO\fP .\" commit 088737f44bbf6378745f5b57b035e57ee3dc4750 Een laag\-niveau Invoer/Uitvoer fout trad op terwijl de inode veranderd werd. Deze fout kan gerelateerd zijn aan een schrijf\-terug van gegevens geschreven door een eerdere \fBwrite\fP(), die kan zijn gedaan via een andere bestandsbeschrijving op hetzelfde bestand. Vanaf Linux 4.13, komen fouten van een schrijf\-terug terug met de belofte dat ze gerapporteerd \fIkunnen\fP worden door volgende \fBwrite\fP() aanroepen en worden gerapporteerd door een volgende \fBfsync\fP(2) (al dan niet ook gerapporteerd door \fBwrite\fP()). Een alternatief geval van \fBEIO\fP op netwerk bestandssystemen is wanneer een geadviseerde lock werd verwijderd op de bestandsbeschrijving en als die lock verloren werd. Zie de \fIVerloren Locks\fP sectie van \fBfcntl\fP(2) voor meer details. .TP \fBENOSPC\fP Het apparaat dat het bestand bevat waar \fIbi\fP naar wijst heeft geen ruimte voor de gegevens. .TP \fBEPERM\fP De operatie werd voorkomen door een bestandszegel; zie \fBfcntl\fP(2). .TP \fBEPIPE\fP \fIbi\fP is verbonden met een pijp of socket waarvan de lees\-uitgang gesloten is. Wanneer dit gebeurd ontvangt het schrijvende proces een \fBSIGPIPE\fP signaal; (Dus, de uitvoer waarde van de write wordt alleen gezien als het programma het signaal ontvangt, blokkeert of negeert.) .PP Andere fouten kunnen optreden afhankelijk van dat wat verbonden is met \fIbi\fP. .SH "VOLDOET AAN" .\" SVr4 documents additional error .\" conditions EDEADLK, ENOLCK, ENOLNK, ENOSR, ENXIO, or ERANGE. SVr4, 4.3BSD, POSIX.1\-2001. .PP Under SVr4 kan een write op elk punt onderbroken worden en \fBEINTR\fP teruggeven, niet alleen voordat enige gegevens zijn geschreven. .SH OPMERKINGEN De typen \fIsize_t\fP en \fIssize_t\fP zijn, respectively, gehele getal typen met of zonder teken zoals gespecificeerd door POSIX.1. .PP Een succesvolle terugkeer uit \fBwrite\fP() is geen garantie dat de gegevens zijn toegekend aan de schijf. Op sommige bestandssystemen, inclusief NFS, is het zelfs geen garantie dat de ruimte succesvol werd gereserveerd voor de gegevens. In dit geval, kunnen sommige fouten worden vertraagd tot een toekomstige \fBwrite\fP(), \fBfsync\fP(2), of zelfs \fBclose\fP(2). De enige manier om zeker te zijn is door \fBfsync\fP(2) aan te roepen, nadat u klaar bent met het schrijven van alle gegevens. .PP Als een \fBwrite\fP() werd onderbroken door een signaal voordat enige bytes werden geschreven, dan zal de aanroep falen met de fout \fBEINTR\fP; als hij werd onderbroken nadat op zijn minst een byte werd geschreven, dan is de aanroep succesvol, en retourneert het aantal geschreven bytes. .PP .\" commit e28cc71572da38a5a12c1cfe4d7032017adccf69 Op Linux zal \fBwrite\fP() (en vergelijkbare systeem aanroepen) maximaal 0x7ffff000 (2,147,479,552) bytes overdragen, en het daadwerkelijk aantal geschreven bytes retourneren. (Dit is waar voor zowel 32\-bit als 64\-but systemen.) .PP Een foutmelding gedurende het uitvoeren van \fBwrite\fP() onder gebruik van directe Invoer/Uitvoer betekent niet dat de volledige schrijf actie faalde. Een deel van de gegevens kan zijn geschreven en de gegevens op de bestandspositie waar de \fBwrite\fP() werd geprobeerd dient beschouwd te worden als inconsistent. .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 opeenvolgende API´s staan \fBwrite\fP() en \fBwritev\fP(2). En tussen de effecten die atomair zouden moeten zijn langs threads (en processen) zijn de veranderingen aan de bestandspositie. Echter op Linux voor versie 3.14 was dit niet het geval: als twee processen die een open bestandsbeschrijving delen (zie \fBopen\fP(2)) een \fBwrite\fP() (or \fBwritev\fP(2)) tegelijkertijd uitvoeren, dan zijn de Invoer/Uitvoer operaties not atomair met betrekking tot het aanpassen van de bestandspositie, hetgeen kan resulteren dat de gegevens blokken geschreven door beide processen kunnen overlappen. Dit probleem werd opgelost in Linux 3.14. .SH "ZIE OOK" \fBclose\fP(2), \fBfcntl\fP(2), \fBfsync\fP(2), \fBioctl\fP(2), \fBlseek\fP(2), \fBopen\fP(2), \fBpwrite\fP(2), \fBread\fP(2), \fBselect\fP(2), \fBwritev\fP(2), \fBfwrite\fP(3) .SH COLOFON Deze pagina is onderdeel van release 5.10 van het Linux \fIman\-pages\fP\-project. Een beschrijving van het project, informatie over het melden van bugs en de nieuwste versie van deze pagina zijn op \%https://www.kernel.org/doc/man\-pages/ te vinden. .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 .