Provided by: manpages-nl-dev_4.15.0-9_all bug

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

   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  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  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  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.13  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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.