Provided by: manpages-nl-dev_4.13-4_all 

NAAM
link, linkat - maak een nieuwe naam voor een bestand
SAMENVATTING
#include <unistd.h>
int link(const char *oudpad, const char *nieuwpad);
#include <fcntl.h> /* Definitie van AT_* constanten */
#include <unistd.h>
int linkat(int oudmapbi, const char *oudpad,
int nieuwmapbi, const char *nieuwpad, int vlaggen);
Test Macro´s in glibc (zie feature_test_macros(7)):
linkat():
Vanaf glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Vóór glibc 2.10:
_ATFILE_SOURCE
BESCHRIJVING
link() maakt een nieuwe koppeling (ook bekend als harde koppeling) naar een bestaand bestand.
Als nieuwpad al bestaat, dan zal het niet worden overschreven.
De nieuwe naam kan net zo gebruikt als de oude naam voor wat voor opdracht dan ook; beide namen wijzen
naar hetzelfde bestand (en hebben daarom dezelfde toestemmingen en eigenaar) en het is onmogelijk te
achterhalen wat de "oorspronkelijke" naam was.
linkat()
De linkat() systeem aanroep werkt op exact dezelfde manier als link(), behalve dan voor de hier
beschreven verschillen.
Als de padnaam gegeven in oudpad relatief is, dan wordt deze geïnterpreteerd als relatief aan de map
aangewezen door de bestandsindicator oudpadbi (in plaats van relatief aan de werk map van het aanroepende
proces, zoals gedaan door link() voor een relatieve padnaam).
Als oudpad relatief is en oudpadbi heeft de speciale waard AT_FDCWD, dan wordt oudpad geïnterpreteerd als
relatief aan de huidige werk map van het aanroepende proces (zoals link()).
Als oudpad absoluut is, dan wordt oudpadbi genegeerd.
De interpretatie van nieuwpad is zoals voor oudpad behalve dat een relatieve padnaam wordt
geïnterpreteerd als relatief aan de map aangewezen door de bestandsindicator nieuwmapbi.
De volgende waarden kunnen per bit worden geOF´ed in vlaggen:
AT_EMPTY_PATH (vanaf Linux 2.6.39)
Als oudpad een lege tekenreeks is, maak dan een koppeling naar een bestand aangewezen door
oudmapbi (die kan zijn verkregen door de open(2) O_PATH vlag). In dit geval kan oudmapbi wijzen
naar elk type bestand behalve een map. Dit zal in het algemeen niet werken als het bestand een
aantal koppelingen van nul heeft (bestanden aangemaakt met O_TMPFILE en zonder O_EXCL zijn een
uitzondering). De aanroeper moet de CAP_DAC_READ_SEARCH capaciteit hebben om deze vlag te kunnen
gebruiken. Deze vlag is Linux-specifiek; definieer _GNU_SOURCE om zijn definitie te verkrijgen.
AT_SYMLINK_FOLLOW (sinds Linux 2.6.18)
Standaard ontkoppeld linkat() oudpad niet als het een symbolische koppeling (zoals link()) is. De
vlag AT_SYMLINK_FOLLOW kan worden opgegeven in vlaggen om er voor te zorgen dat oudpad ontkoppeld
wordt als het een symbolische koppeling is. Als procfs gekoppeld is, dan kan deze als alternatief
voor AT_EMPTH_PATH gebruikt worden, zoals hier:
linkat(AT_FDCWD, "/proc/self/fd/<fd>", newdirfd,
newname, AT_SYMLINK_FOLLOW);
Voor kernel 2.6.18 werd het vlaggen argument niet gebruikt en moest worden opgegeven als 0.
Zie openat(2) voor een uitleg over de noodzaak van linkat().
EIND WAARDE
Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.
FOUTEN
EACCES Schrijf toegang in de map waar nieuwpad in zou komen is niet toegestaan voor het geldende uid van
het proces,of een van de mappen in oudpad of nieuwpad stond zoek (uitvoer) toestemming niet toe.
(Zie ook path_resolution(7).)
EDQUOT De gebruiker quota van schijf blokken op het bestandssysteem zijn uitgeput.
EEXIST nieuwpad bestaat al.
EFAULT oudpad of nieuwpad wijzen buiten door u toegankelijke adres ruimte.
EIO Een Invoer/Uitvoer fout trad op.
ELOOP Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van oudpad of nieuwpad.
EMLINK Het bestand waar oudpad naar wijst, heeft al het hoogste aantal mogelijke koppelingen.
Bijvoorbeeld op een ext4(5) bestandssysteem dat niet voorzien is van dir_index, is de limiet van
het aantal harde koppeling naar een bestand 65.000; op btrfs(5) is de limiet 65.535 koppelingen.
ENAMETOOLONG
oudpad of nieuwpad was te lang.
ENOENT Een map gedeelte van oudpad of nieuwpad bestaat niet of is een loshangende symbolische koppeling.
ENOMEM Onvoldoende kernelgeheugen voorhanden.
ENOSPC Het apparaat waar het bestand op zit heeft geen ruimte voor een nieuwe map.
ENOTDIR
Een deel dat gebruikt wordt als map van oudpad of nieuwpad is in feite geen map.
EPERM oudpad is een map.
EPERM Het bestandssysteem dat oudpad en nieuwpad bevat ondersteunt de aanmaak van harde koppelingen
niet.
EPERM (sinds Linux 3.6)
De aanroeper heeft geen rechten om een harde koppeling naar dit bestand te maken (zie de
beschrijving van /proc/sys/fs/protected_hardlinks in proc(5)).
EPERM oudpad is gemarkeerd als onveranderlijk of alleen-toevoegen. (Zie ioctl_iflags(2).)
EROFS Het bestand staat op een alleen-lezen bestandssysteem.
EXDEV oudpad en nieuwpad staan niet op hetzelfde bestandssysteem. (Linux staat toe een bestandssysteem
op verschillende punten aan te koppelen, maar link() werkt niet over verschillende aankoppel
punten, zelfs als hetzelfde bestandssysteem is aangekoppeld op beide.)
De volgende additionele fouten kunnen optreden in linkat():
EBADF oudmapbi of nieuwmapbi is geen geldige bestandsindicator.
EINVAL Een ongeldige vlag werd opgegeven in vlaggen.
ENOENT AT_EMPTY_PATH werd opgegeven in vlaggen, maar de aanroeper heeft niet de CAP_DAC_READ_SEARCH
capaciteit.
ENOENT Een poging werd gedaan om het /proc/self/fd/NN bestand overeenkomende met een bestandsindicator
aangemaakt met
open(path, O_TMPFILE | O_EXCL, mode);
Zie open(2).
ENOENT Een poging werd gedaan om een koppeling naar een /proc/self/fd/NN bestand te maken die overeen
kwam met een bestand die werd gewist.
ENOENT oudpad is een relatieve padnaam en oudmapbi wijst naar een map die gewist werd, of nieuwpad is een
relatieve padnaam en nieuwmapbi wijst naar een map die gewist werd.
ENOTDIR
oudpad is relatief en oudmapbi is een bestandsindicator die naar een bestand anders dan een map
wijst; of vergelijkbaar voor nieuwpad en nieuwmapbi
EPERM AT_EMPTY_PATH werd opgegeven in vlaggen, oudpad is een lege tekenreeks, en oudmapbi wijst naar een
map.
VERSIES
linkat() werd toegevoegd aan Linux in kernel 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc
in versie 2.4.
VOLDOET AAN
link(): SVr4, 4.3BSD, POSIX.1-2001 (maar zie OPMERKINGEN), POSIX.1-2008.
linkat(): POSIX.1-2008.
OPMERKINGEN
Harde koppelingen, zoals die gemaakt worden door link(), kunnen niet over meerdere bestandsystemen heen
reiken. Gebruik symlink() als dat nodig is.
POSIX.1-2001 schrijft voor dat link() oudpad moet ontkoppelen als het een symbolische koppeling is.
Echter vanaf kernel 2.0 doet dit niet: als oudpad een symbolische koppeling is, dan wordt nieuwpad
aangemaakt als een harde koppeling naar hetzelfde symbolische koppeling bestand (m.a.w. nieuwpad wordt
een symbolische koppeling naar hetzelfde bestand waar oudpad naar wijst). Sommige andere implementaties
gedragen zich op dezelfde manier als Linux. POSIX.1-2008 verandert de specificatie van link() daarbij
wordt het implementatie-afhankelijk van het ontkoppeld zijn of niet van oudpad als het een symbolische
koppeling is. Om precieze controle over de behandeling van symbolische koppelingen te krijgen bij het
aanmaken van koppelingen gebruik linkat().
Glibc-opmerkingen
Op oudere kernels waar linkat niet beschikbaar is, valt de glibc omwikkel functie terug op het gebruik
van link(), behalve als AT_SYMLINK_FOLLOW werd opgegeven. Als oudpad en nieuwpad relatieve padnamen zijn,
dan construeert glibc padnamen gebaseerd op de symbolische koppelingen die overeenkomen met de oudpadbi
en nieuwmapbi argumenten.
BUGS
Op NFS bestandsystemen kan de teruggeef code fout zijn als de NFS server de koppeling uitvoert maar
sterft voordat het dat kan doen. Gebruik stat(2) om uit te vinden of de koppeling gemaakt werd.
ZIE OOK
ln(1), open(2), rename(2), stat(2), symlink(2), unlink(2), path_resolution(7), symlink(7)
COLOFON
Deze pagina is onderdeel van release 5.10 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 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.
Linux 21 december 2020 LINK(2)