Provided by: manpages-nl-dev_4.21.0-2_all bug

NAAM

       link, linkat - maak een nieuwe naam voor een bestand

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

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);

   Feature Test Macro´s eisen in  glibc (zie feature_test_macros(7)):

       linkat():
           Vanaf glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Voor 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 Linux 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 aangekoppelde 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  oldpath (newpath)  is relatief maar olddirfd  (newdirfd)   is  noch  AT_FDCWD   noch  een  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 2.6.16; bibliotheek ondersteuning werd toegevoegd aan glibc 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  Linux 2.0 doet Linux 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)

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 man-pagina's 6.03                          5 februari 2023                                         link(2)