Provided by: manpages-nl-dev_4.15.0-9_all bug

NAAM

       write - schrijf naar een bestandsindicator

SAMENVATTING

       #include <unistd.h>

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

BESCHRIJVING

       write()  schrijft  tot  tel  bytes  naar het bestand waar bi naar wijst, van de buffer die
       begint op buf.

       Het aantal geschreven bytes kan kleiner zijn  dan  tel  als  bijvoorbeeld  er  onvoldoende
       ruimte  was  op  het  onderliggende fysieke medium, of als de RLIMIT_FSIZE hulpbron limiet
       werd bereikt (zie setrlimit(2)), of als de aanroep werd geïnterrumpeerd door  een  signaal
       nadat het minder dan tel bytes geschreven had. (Zie ook pipe(7).)

       In   een  doorzoekbaar  bestand  (m.a.w.  een  op  welk  lseek(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 geopen(2)d
       werd met O_APPEND. 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.

       POSIX eist dat een read(2) die bewijsbaar na een write() plaatsvindt  de  nieuwe  gegevens
       oplevert. Merk op dat niet alle bestandsystemen voldoen aan POSIX.

       Volgens  POSIX.1  als  tel  groter  is  dan  SSIZE_MAX  dan is het resultaat implementatie
       afhankelijk; zie OPMERKINGEN voor de boven grens op Linux.

EIND WAARDE

       Bij  success  wordt  het  aantal  geschreven  bytes  teruggegeven.  Bij  falen  wordt   -1
       teruggegeven en errno wordt overeenkomstig gezet.

       Merk  op  dat  een  succesvolle  write()  ook  minder  dan tel 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 write() 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  write()
       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).

       Als tel nul is en bi wijst naar een normaal  bestand  dan  kan  write()  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 tel nul is en bi wijst naar een bestand  anders dan een
       regulier bestand, dan zijn de resultaten onbepaald.

FOUTEN

       EAGAIN De file beschrijving bi  wijst  naar  een  ander  bestand  dan  een  socket  en  is
              gemarkeerd  als  niet-blokkerend (O_NONBLOCK), en de schrijf aanroep zou blokkeren.
              Zie open(2) voor meer details over de O_NONBLOCK vlag.

       EAGAIN of EWOULDBLOCK
              De file beschrijving bi  wijst  naar  een  ander  bestand  dan  een  socket  en  is
              gemarkeerd  als  niet-blokkerend (O_NONBLOCK), en de schrijf aanroep zou blokkeren.
              Zie open(2) voor meer details over de O_NONBLOCK 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.

       EBADF  bi is geen geldige bestandsindicator, of is niet open voor lezen.

       EDESTADDRREQ
              bi  wijst  naar  een  datagram socket waarvoor een gelijk adres niet ingesteld werd
              gebruikmakend van connect(2).

       EDQUOT De quota van de gebruiker van schijf blokken op het bestandssysteem bevattende  het
              bestand aangewezen door bi is opgebruikt.

       EFAULT buf ligt buiten de door u toegankelijke adres ruimte.

       EFBIG  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.

       EINTR  De aanroep werd onderbroken door een signaal voordat  gegevens  werden  geschreven;
              zie signal(7).

       EINVAL bi  is  gekoppeld  aan  een  object  dat ongeschikt is om naar te schrijven; of het
              bestand werd geopend met de O_DIRECT vlag, en ofwel het opgegeven adres in buf,  de
              waarde opgegeven in count, of de bestandspositie is niet goed opgelijnd.

       EIO    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  write(),  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 kunnen worden door volgende write() aanroepen en
              worden gerapporteerd door een volgende fsync(2) (al dan niet ook gerapporteerd door
              write()).  Een alternatief geval van EIO op netwerk bestandssystemen is wanneer een
              geadviseerde lock werd verwijderd  op  de  bestandsbeschrijving  en  als  die  lock
              verloren werd. Zie de Verloren Locks sectie van fcntl(2) voor meer details.

       ENOSPC Het  apparaat  dat  het  bestand bevat waar bi naar wijst heeft geen ruimte voor de
              gegevens.

       EPERM  De operatie werd voorkomen door een bestandszegel; zie fcntl(2).

       EPIPE  bi is verbonden met een pijp of socket waarvan de lees-uitgang gesloten is. Wanneer
              dit  gebeurd  ontvangt het schrijvende proces een SIGPIPE signaal; (Dus, de uitvoer
              waarde van de write wordt alleen gezien als het  programma  het  signaal  ontvangt,
              blokkeert of negeert.)

       Andere fouten kunnen optreden afhankelijk van dat wat verbonden is met bi.

VOLDOET AAN

       SVr4, 4.3BSD, POSIX.1-2001.

       Under  SVr4  kan een write op elk punt onderbroken worden en EINTR teruggeven, niet alleen
       voordat enige gegevens zijn geschreven.

OPMERKINGEN

       De typen size_t en ssize_t zijn, respectively, gehele getal  typen  met  of  zonder  teken
       zoals gespecificeerd door POSIX.1.

       Een  succesvolle terugkeer uit write() 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 write(), fsync(2), of zelfs close(2). De enige manier
       om  zeker te zijn is door fsync(2) aan te roepen, nadat u klaar bent met het schrijven van
       alle gegevens.

       Als een write() werd onderbroken door een signaal voordat enige bytes  werden  geschreven,
       dan  zal  de aanroep falen met de fout EINTR; als hij werd onderbroken nadat op zijn minst
       een byte werd  geschreven,  dan  is  de  aanroep  succesvol,  en  retourneert  het  aantal
       geschreven bytes.

       Op   Linux   zal   write()   (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.)

       Een   foutmelding   gedurende   het  uitvoeren  van  write()  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 write() werd
       geprobeerd dienen beschouwd te worden als inconsistent.

BUGS

       Volgens POSIX.1-2008/SUSv4 Sectie XSI 2.9.7 ("Thread  interacties  met  Reguliere  Bestand
       Operaties"):

           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: ...

       Tussen  de  opeenvolgende  API´s  staan   write()  en writev(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 bestandsindicator delen (zie open(2))  een write()  (or  writev(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.

ZIE OOK

       close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), pwrite(2), read(2),  select(2),
       writev(2), fwrite(3)

COLOFON

       Deze   pagina  is  onderdeel  van  release  5.13  van  het  Linux  man-pages-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.

VERTALING

       De   Nederlandse   vertaling   van  deze  handleiding  is  geschreven  door  Jos  Boersema
       <joshb@xs4all.nl>, Mario  Blättermann  <mario.blaettermann@gmail.com>  en  Luc  Castermans
       <luc.castermans@gmail.com>

       Deze  vertaling  is  vrije  documentatie;  lees  de  GNU  General Public License Version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ of later over de Copyright-voorwaarden. Er  is
       geen AANSPRAKELIJKHEID.

       Indien  U  fouten  in  de vertaling van deze handleiding zou vinden, stuur een e-mail naar
       ⟨debian-l10n-dutch@lists.debian.org⟩.