LINK(2) | Linux Programmeurs Handleiding | LINK(2) |
link, linkat - maak een nieuwe naam voor een bestand
#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);
linkat():
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.
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:
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().
Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.
De volgende additionele fouten kunnen optreden in linkat():
open(path, O_TMPFILE | O_EXCL, mode);
linkat() werd toegevoegd aan Linux in kernel 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc in versie 2.4.
link(): SVr4, 4.3BSD, POSIX.1-2001 (maar zie OPMERKINGEN), POSIX.1-2008.
linkat(): POSIX.1-2008.
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().
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.
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.
ln(1), open(2), rename(2), stat(2), symlink(2), unlink(2), path_resolution(7), symlink(7)
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.
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.
21 december 2020 | Linux |