.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" 1993 Michael Haardt, Ian Jackson; .\" 1998 Jamie Lokier. .\" .\" 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. .\" .\" Modified Sat Jul 24 13:39:26 1993 by Rik Faith .\" Modified Tue Sep 26 21:47:21 1995 by Andries Brouwer .\" and again on 960413 and 980804 and 981223. .\" Modified Fri Dec 11 17:57:27 1998 by Jamie Lokier .\" Applied correction by Christian Ehrhardt - aeb, 990712 .\" .TH FCNTL 2 "12 Juli 1999" Linux "Linux Programmeurs Handleiding" .SH NAAM fcntl \- manipuleer bestandindicator .SH OVERZICHT .nf .B #include .B #include .sp .BI "int fcntl(int " bi ", int " opd ); .BI "int fcntl(int " bi ", int " opd ", long " arg ); .BI "int fcntl(int " bi ", int " opd ", struct flock * " grendel ); .fi .SH BESCHRIJVING .B fcntl voert 1 van verschillende opdrachten uit op .IR bi . De betreffende opdracht wordt bepaald door .IR opd : .TP 0.9i .B F_DUPFD {kopieer bi} Vind de laagst genummerde beschikbare bestandindicator groter of gelijk aan .I arg en maak het een kopie van .IR bi . Dit is een andere vorm van .BR dup2 (2) die {dup2} precies de bestandindicator die opgegeven wordt gebruikt. .sp De oude en nieuwe beschrijvers mogen uitwisselbaar gebruikt worden. Ze delen grendels, bestand positie pointers en vlaggen; bijvoorbeeld: als de bestand positie veranderd wordt met .B lseek voor 1 van de beschrijvers dan is de positie ook veranderd voor de andere. .sp De twee beschrijvers delen echter niet de sluit-bij-uitvoering vlag. De sluit-bij-uitvoering vlag van de kopie is uit, wat betekend dat hij niet gesloten wordt bij uitvoering. .sp Bij success wordt de nieuwe beschrijver teruggegeven. .TP .B F_GETFD {krijg bi} Lees de sluit-bij-uitvoering vlag. Als het .B FD_CLOEXEC {sluit-bij-uitvoeren} bit 0 is, zal het bestand open blijven door een .BR exec " heen," anders zal het gesloten worden. .TP .B F_SETFD {zet vlag} Zet de sluit-bij-uitvoering vlag naar de waarde bepaald door het .B FD_CLOEXEC bit van .IR arg . .TP .B F_GETFL {krijg vlaggen} Lees de beschrijvers vlaggen (alle vlaggen (zoals gezet door .BR open (2)) worden teruggegeven). .TP .B F_SETFL {zet vlaggen} Zet de beschrijvers vlaggen naar de waarde bepaald door .IR arg . Alleen .BR O_APPEND " {toevoegen}, " O_NONBLOCK " {niet blokkeren} en " O_ASYNC {niet-gelijktijdig} mogen gezet worden; de andere vlaggen blijven onaangeroerd. .sp De vlaggen worden gedeeld door kopieen (gemaakt met .BR dup "(2), " fork (2), enz.) van dezelfde bestandindicator. .sp De vlaggen en hun woordbetekenissen worden beschreven in .BR open (2). .P .BR F_GETLK " {krijg grendel}, " F_SETLK " {zet grendel} en " F_SETLKW {zet grendel wacht} worden gebruikt om in-overeenstemming-bestand-grendels te beheren. Het derde argument .I lock is een pointer naar een "struct flock" {structuur f grendel}. (die kan worden overschreven door deze aanroep). .TP .B F_GETLK {krijg grendel} Geef de "flock" structuur die ons weerhoudt van het krijgen van de grendel, of zet het .B l_type veld van de grendel naar .B F_UNLCK {open-grendel} als er geen beletsel is. .TP .B F_SETLK {zet grendel} De grendel wordt gezet (als .BR l_type , .B F_RDLCK {lees grendel} of .BR F_WRLCK " {schrijf grendel} is)" of gewist (wanneer het .BR F_UNLCK " {open-slot} is)." Als de grendel van iemand anders is, geeft deze aanroep -1 terug en zet .I errno naar .B EACCES {toegang} of .BR EAGAIN " {nogmaals}." .TP .B F_SETLKW {zet grendel wacht} Net als .BR F_SETLK , {zet grendel} maar in plaats van een fout teruggevend wachten we tot de grendel open gaat. Als een signaal dat afgevangen zal worden ontvangen wordt terwijl .B fcntl aan het wachten is, wordt het onderbroken en (nadat de signaal behandelaar terugkeerde) keert het onmiddellijk terug (met teruggave van waarde \-1 en wordt .I errno gezet naar .BR EINTR " {onderbroken})." .P .BR F_GETOWN " {krijg eigen}, " F_SETOWN " {zet eigen}, " F_GETSIG " {krijg signaal} en " F_SETSIG " {zet signaal}" worden gebruikt om In/Uit beschikbaarheids signalen te beheren: .TP .B F_GETOWN {krijg eigen} Krijg het proces ID of proces groep, momenteel SIGIO en SIGURG ontvangend voor gebeurtenissen met de bestandindicator .IR bi . Proces groepen worden teruggegeven als negatieve waardes. .TP .B F_SETOWN {zet eigen} Zet het proces ID of de proces groep die de SIGIO en SIGURG signalen zal ontvangen voor gebeurtenissen met de bestandindicator .IR bi . Proces groepen worden gegeven als negatieve waardes. .RB ( F_SETSIG {zet sign.} kan gebruikt worden om een ander signaal op te geven in plaats van SIGIO.) .\" From glibc.info: Als je de .B O_ASYNC {niet-gelijktijdig} vlag op een bestandindicator zet (of door deze vlag met de .IR open (2) aanroep te leveren, of met gebruik van de .B F_SETFL {zet vlaggen} opdracht van .BR fcntl ), dan zal een SIGIO signaal gezonden worden telkens wanneer invoer of uitvoer mogelijk wordt voor die bestandindicator. .sp Het proces of de proces groep die het signaal zal ontvangen kan gekozen worden met gebruik van de .B F_SETOWN opdracht van de .B fcntl functie. Als een bestandindicator een socket is, dan bepaald dit ook de ontvanger van SIGURG signalen die afgeleverd worden wanneer "out-of-band" {buiten band} gegevens aankomen op het socket. (SIGURG wordt gezonden en elke situatie waar .BR select (2) zou rapporteren dat het socket in een aparte toestand verkeerd {"exceptional condition"}.) Als de bestandindicator overeenkomt met een terminal {"terminal"} apparaat, dan worden SIGIO signalen naar de voorgrond proces groep van het terminal gezonden. .TP .B F_GETSIG {krijg signaal} Krijg het signaal toegezonden wanneer invoer of uitvoer mogelijk wordt. Een waarde van nul betekend dat SIGIO gezonden wordt. Elke andere waarde (inclusief SIGIO) wordt in plaats daarvan het gezonden signaal, en in dit geval worden extra informatie beschikbaar voor de signaal behandelaar als die geïnstalleerd werd met SA_SIGINFO. .TP .B F_SETSIG {zet signaal} Zet het verzonden signaal voor wanneer invoer of uitvoer mogelijk wordt. Een waarde van nul betekend het standaard {eng: default} SIGIO signaal. Elke andere waarde (inclusief SIGIO) wordt in plaats daarvan het verzonden signaal, en in dit geval worden extra informatie beschikbaar voor de signaal behandelaar als die geïnstalleerd werd met SA_SIGINFO. .sp Door F_SETSIG te gebruiken met een niet-nul waarde, en SA_SIGINFO voor de signaal behandelaar te zetten (zie .BR sigaction (2)), worden extra informatie over In/Uit gebeurtenissen aan de behandelaar gegeven in een .I siginfo_t structuur. Als het .I si_code veld aangeeft dat de bron SI_SIGIO is, dan geeft het .I si_fd veld de bestandindicator die verbonden is met de gebeurtenis. Anders zijn er geen mogelijkheden om te achterhalen welke bestandindicators wachten, en moet je de gebruikelijke .RB ( select "(2) {kies}," .BR poll "(2) {raadpleeg}," .BR read "(2) {lees}" mechanismes gebruiken met .B O_NONBLOCK {niet blokkeer} gezet enz.) om te bepalen welke bestandindicators beschikbaar zijn voor In/Uit. .sp Door het kiezen van een POSIX.1b echte-tijd signaal (waarde >= SIGRTMIN) kunnen meerdere In/Uit gebeurtenissen in een wachtrij gezet worden met gebruik van dezelfde signaal nummers. (In-een-wachtrij-zetten is afhankelijk van het beschikbare geheugen). Extra informatie zijn voorhanden als SA_SIGINFO gezet is voor de signaal behandelaar, net als boven. .PP Gebruik makend van deze mechanismes kan een programma een volledig ongelijktijdige {"asynchronous"} In/Uit verwezijnlijken zonder meestal .BR select (2) of .BR poll (2) te gebruiken. .PP Het gebruik van .BR O_ASYNC , .BR F_GETOWN , .B F_SETOWN is eigen aan BSD en Linux. .B F_GETSIG en .B F_SETSIG zijn Linux-eigen. POSIX heeft ongelijktijdige In/Uit en de .I aio_sigevent structuur om soortgelijke dingen te bereiken; deze zijn ook voorhanden in Linux, als onderdeel van de GNU C bibliotheek (Glibc). .SH "TERUGGEEF WAARDE" Bij een geslaagde aanroep hangt de terugkeer-waarde af van de operatie: .TP 0.9i .B F_DUPFD De nieuwe beschrijver. .TP .B F_GETFD Waarde van vlag. .TP .B F_GETFL Waarde van vlaggen. .TP .B F_GETOWN Waarde van beschrijver eigenaar. .TP .B F_GETSIG Waarde van verzonden signaal wanneer lees of schrijf mogelijk wordt, of nul voor het traditionele SIGIO gedrag. .TP Alle ander opdrachten Nul. .PP Bij falen wordt \-1 teruggegeven en .I errno wordt naar behoren gezet. .SH FOUTEN .TP 0.9i .B EACCES {toegang} Opdracht wordt verboden door grendels van andere processen. .TP .B EAGAIN {opnieuw} Opdracht wordt verboden omdat het bestand door een ander proces in geheugen-kaart {"memory-directorieped"} is gebracht. .TP .B EBADF {slechte bi} .I bi is niet een open bestandindicator. .TP .B EDEADLK {patstelling} Het werd bemerkt dat de opgegeven .B F_SETLKW opdracht een patstelling zou veroorzaken. .TP .B EFAULT {fout} .I grendel ligt buiten door u toegankelijke adres ruimte. .TP .B EINTR {onderbroken} Voor .BR F_SETLKW , de opdracht werd onderbroken door een signaal. Voor .BR F_GETLK " en " F_SETLK , de opdracht werd onderbroken door een signaal voordat de grendel werd getest of verkregen. Zeer waarschijnlijk tijdens het vergrendelen van een op-afstand {"remote"} bestand (grendelen over NFS), maar kan soms ook locaal {"local"} gebeuren. .TP .B EINVAL {ongeldig} Voor .BR F_DUPFD , .I arg is negatief of is groter dan de maximum toegestane waarde. Voor .BR F_SETSIG , .I arg is niet een toegestaan signaal nummer. .TP .B EMFILE {max bestand} Voor .BR F_DUPFD , het proces heeft al het maximum aantal bestandindicators open. .TP .B ENOLCK {geen grendel} Teveel segment grendels open, grendel tabel is vol, of een op-afstand protocol faalde (o.a. grendelen over NFS). .TP .B EPERM {toestemming} Geprobeerd om de .B O_APPEND vlag te wissen op een bestand dat de alleen-toevoegen {"append-only"} eigenschap gezet heeft .SH OPMERKINGEN De fouten teruggegeven door .B dup2 zijn verschillend van die teruggegeven door .BR F_DUPFD . .SH "VOLDOET AAN" SVr4, SVID, POSIX, X/OPEN, BSD 4.3. Alleen de opdrachten F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK en F_SETLKW worden opgegeven door POSIX.1. F_GETOWN en F_SETOWN zijn BSD-ismes, niet ondersteund in SVr4; F_GETSIG en F_SETSIG zijn eigen aan Linux. De vlaggen legaal voor F_GETFL/F_SETFL zijn die, ondersteund door .BR open (2) en ze wisselen tussen deze systemen; O_APPEND, O_NONBLOCK, O_RDONLY, en O_RDWR worden opgegeven door POSIX.1. SVr4 ondersteund verschillende andere keuzes en vlaggen niet hier beschreven. .PP SVr4 beschrijft extra EIO, ENOLINK en EOVERFLOW fouttoestanden. .SH "ZIE .BR dup2 "(2) {verdubbel}," .BR flock "(2) {vergrendel}," .BR open "(2) {open}," .BR socket "(2)" .\" Translated Sat Nov 11 15:13:14 CET 2000 by Jos Boersema .\" .SH VERTALING Dit is een handleiding uit \fBmanpages-dev 1.29\fR. .PP Alles wat tussen `\fB{\fR'..`\fB}\fR' staat is \fBaanvullende vertaling\fR, en hoort \fBniet\fR bij de originele handleiding. Email naar . .\"Vertaling Jos Boersema $Id: fcntl.2,v 1.1 2003/04/28 18:43:34 bokkie Exp $