.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt, Ian Jackson. .\" and Copyright (C) 2016 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 Wed Jul 21 22:40:25 1993 by Rik Faith .\" Modified Sat Feb 18 15:27:48 1995 by Michael Haardt .\" Modified Sun Apr 14 11:40:50 1996 by Andries Brouwer : .\" corrected description of effect on locks (thanks to .\" Tigran Aivazian ). .\" Modified Fri Jan 31 16:21:46 1997 by Eric S. Raymond .\" Modified 2000-07-22 by Nicolás Lichtmaier .\" added note about close(2) not guaranteeing that data is safe on close. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH CLOSE 2 "9 juni 2020" Linux "Linux Programmeurs Handleiding" .SH NAAM close \- sluit een bestandsindicator .SH SAMENVATTING .nf \fB#include \fP .PP \fBint close(int \fP\fIbi\fP\fB);\fP .fi .SH BESCHRIJVING \fBclose\fP() sluit een bestandsindicator, zodat deze niet langer naar een bestand wijst en hergebruikt kan worden. Eventuele record sloten op het bestand (zie \fBfcntl\fP(2)) die het eigendom waren van het proces worden verwijderd (onafhankelijk van de bestandsindicator die gebruikt werd om het slot te verkrijgen). .PP Als \fIbi\fP de laatste dubbelganger van een bepaalde bestandsindicator is, worden de systeem\-middelen die erbij horen vrijgemaakt; als de bestandsindicator de laatste verwijzing was naar een bestand dat verwijderd werd met \fBunlink\fP(2) dan wordt het bestand verwijderd. .SH "EIND WAARDE" Bij succes geeft \fBclose\fP() nul terug. Bij falen wordt \-1 teruggegeven en wordt \fIerrno\fP overeenkomstig gezet. .SH FOUTEN .TP \fBEBADF\fP \fIbi\fP is geen geldige open bestandsindicator. .TP \fBEINTR\fP .\" Though, it's in doubt whether this error can ever occur; see .\" https://lwn.net/Articles/576478/ "Returning EINTR from close()" De \fBclose\fP() aanroep werd onderbroken door een signaal; zie \fBsignal\fP(7). .TP \fBEIO\fP Een Invoer/Uitvoer fout trad op. .TP \fBENOSPC\fP, \fBEDQUOT\fP Op NFS worden deze fouten normaliter gerapporteerd tegen de eerste schrijf actie die de beschikbare opslag ruimte overschrijdt, maar in plaats daarvan tegen een volgende \fBwrite\fP(2), \fBfsync\fP(2), of \fBclose\fP(). .PP Zie OPMERKINGEN voor een discussie over waarom \fBclose\fP() niet opnieuw geprobeerd moet worden na een fout. .SH "VOLDOET AAN" .\" SVr4 documents an additional ENOLINK error condition. POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.3BSD. .SH OPMERKINGEN Een succesvolle \fBclose\fP() garandeert niet dat de gegevens succesvol zijn bewaard op de schijf doordat de kernel het schrijven ervan achterhoudt. Het is niet normaal voor een bestandssysteem om de buffers door te spoelen als het bestand wordt gesloten. Als u zeker moet zijn dat de gegevens fysiek bewaard zijn, gebruik dan \fBfsync\fP(2). (Het hangt nu verder van de schijf hardware af.) .PP .\" De sluit\-bij\-uitvoeren bestandsindicator vlag kan worden gebruikt om er voor zorg te dragen dat een bestandsindicator automatisch wordt gesloten bij een succesvolle \fBexecve\fP(2); zie \fBfcntl\fP(2) voor details. .SS "Multithreaded processen en close()" .\" Date: Tue, 4 Sep 2007 13:57:35 +0200 .\" From: Fredrik Noring .\" One such race involves signals and ERESTARTSYS. If a file descriptor .\" in use by a system call is closed and then reused by e.g. an .\" independent open() in some unrelated thread, before the original system .\" call has restarted after ERESTARTSYS, the original system call will .\" later restart with the reused file descriptor. This is most likely a .\" serious programming error. Het is hoogstwaarschijnlijk niet slim om bestandsindicatoren te sluiten terwijl ze in gebruik kunnen zijn door systeem aanroepen in andere threads in hetzelfde proces. Omdat een bestandsindicator kan worden hergebruikt, zijn er obscure looptijd condities die tot onbedoelde neven effecten kunnen leiden. .PP Bovendien, overweeg het volgende scenario waar twee threads dezelfde operaties op dezelfde bestandsindicator uitvoeren: .IP 1. 3 Een thread wordt geblokkeerd door een Invoer/Uitvoer systeem aanroep op de bestandsindicator. Bijvoorbeeld, hij probeert te \fBwrite\fP(2) naar een pijp die al vol is, of probeert te \fBread\fP(2) van een stream socket die op dit moment geen gegevens beschikbaar heeft. .IP 2. Een andere thread sluit de bestandsindicator. .PP Het gedrag in deze situatie varieert over systemen. Op sommige systemen, zal de blokkerende systeem aanroep onmiddellijk met een fout beëindigen zodra de bestandsindicator is gesloten .PP .\" 'struct file' in kernel-speak .\" Op Linux (en mogelijk enkele andere systemen), is het gedrag anders: de blokkerende Invoer/Uitvoer systeem aanroep houdt een referentie naar de onderliggende bestandsindicator open, en deze referentie houdt de indicator open totdat de Invoer/Uitvoer systeem aanroep eindigt. (Zie \fBopen\fP(2) voor een discussie over open bestandsindicatoren.) Dus kan de blokkerende systeem aanroep in de eerste thread succesvol eindigen na de \fBclose\fP() in de tweede thread. .SS "Omgaan met fout meldingen van close()" Een zorgvuldige programmeur controleert de uitvoer waarde van \fBclose\fP(), omdat het mogelijk is dat fouten van een vorige \fBwrite\fP(2) operatie alleen worden gerapporteerd bij de finale \fBclose\fP() die de open bestandsindicator vrij geeft. Het niet controleren van de uitvoer waarde bij het sluiten van een bestand kan leiden tot \fIzwijgend\fP verlies van gegevens. Dit kan speciaal optreden met NFS en met schijf quota. .PP Merk op, dat een fout uitvoer alleen gebruikt mag worden voor diagnose (m.a.w. een waarschuwing aan de applicatie dat er nog een Invoer/Uitvoer bezig kan zijn of dat er gefaalde Invoer/Uitvoer kan zijn) of gebruikt voor reparaties (b.v. het opnieuw schrijven van een bestand of het maken van een backup). .PP .\" The file descriptor is released early in close(); .\" close() ==> __close_fd(): .\" __put_unused_fd() ==> __clear_open_fd() .\" return filp_close(file, files); .\" .\" The errors are returned by filp_close() after the FD has been .\" cleared for re-use. .\" filp_close() Opnieuw \fBclose\fP() proberen na terug melding van een fout is verkeerd om te doen, omdat dat er voor kan zorgen dat een hergebruikte bestandsindicator van een andere thread kan worden gesloten. Dit kan optreden doordat de Linux kernel de bestandsindicator \fIaltijd\fP vroeg tijdens de close operatie los laat, daarbij hem voor hergebruik beschikbaar maakt; de stappen die een fout kunnen geven, zoals doorspoelen van data naar het bestandssysteem of apparaat, treden alleen later tijdens de close operatie op. .PP .\" FreeBSD documents this explicitly. From the look of the source code .\" SVR4, ancient SunOS, later Solaris, and AIX all do this. .\" Issue 8 Veel andere implementatie sluiten de bestandsindicator ook op deze manier (behalve in het geval van \fBEBADF\fP, aangezien dit betekent dat de bestandsindicator ongeldig was) zelfs als deze een vervolgens een fout rapporteren bij terugkeer van \fBclose\fP(). POSIX.1 is momenteel stil op dit punt, maar er bestaan plannen om dit gedrag te eisen in een volgende belangrijke uitgave van de standaard. .PP Een zorgvuldige programmeur die Invoer/Uitvoer fouten wil weten mag de aanroep van \fBclose\fP() vooraf laten gaan met een aanroep van \fBfsync\fP(2). .PP De \fBEINTR\fP fout is een speciaal geval. Betreffende de \fBEINTR\fP fout, zegt POSIX.1\-2008: .PP .RS Als \fBclose\fP() werd onderbroken door een signaal dat ontvangen moet worden, dan moet het \-1 teruggeven met \fIerrno\fP gezet op \fBEINTR\fP en de status van \fIfildes\fP is niet gespecificeerd. .RE .PP .\" FIXME . for later review when Issue 8 is one day released... .\" POSIX proposes further changes for EINTR .\" http://austingroupbugs.net/tag_view_page.php?tag_id=8 .\" http://austingroupbugs.net/view.php?id=529 .\" .\" FIXME . .\" Review the following glibc bug later .\" https://sourceware.org/bugzilla/show_bug.cgi?id=14627 Dit staat het gedrag toe dat optreedt in Linux en veel andere implementaties waar, zoals bij andere fouten die kunnen worden gerapporteerd door \fBclose\fP(), de bestandsindicator gegarandeerd wordt gesloten. Hoewel het ook een andere mogelijkheid opent: dat de implementatie een \fBEINTR\fP fout terug geeft en de bestandsindicator open houdt. (Volgens de documentatie doet de HP\-UX \fBclose\fP() implementatie dit.) De aanroeper dient nog een keer \fBclose\fP() gebruiken om de bestandsindicator te sluiten, om lekken van bestandsindicatoren te voorkomen. Deze verschillen in implementatie gedrag betekenen een moeilijkheid voor overdraagbare applicaties, omdat in veel implementaties \fBclose\fP() niet nogmaals hoeft te worden aangeroepen na een \fBEINTR\fP fout, en op zijn minst op een moet \fBclose\fP() nog een keer aangeroepen worden. Er bestaan plannen om dit raadsel aan te pakken in een volgende belangrijke uitgave van de POSIX.1 standaard. .SH "ZIE OOK" \fBfcntl\fP(2), \fBfsync\fP(2), \fBopen\fP(2), \fBshutdown\fP(2), \fBunlink\fP(2), \fBfclose\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. .SH VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blättermann en Luc Castermans . 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. Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar .MT debian-l10n-dutch@lists.debian.org .ME .