Provided by: manpages-nl-dev_4.27.0-1_all bug

NAAM

       rename, renameat, renameat2 - verander de naam of plaats van een bestand

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

SAMENVATTING

       #include <stdio.h>

       int rename(const char *oudpad, const char *nieuwpad);

       #include <fcntl.h>           /* Definitie van AT_* constanten */
       #include <stdio.h>

       int renameat(int oud_bes_ind, const char *oudpad,
                    int nieuw_bes_ind, const char *nieuwpad);
       int renameat2(int oud_bes_ind, const char *oudpad,
                     int nieuw_bes_ind, const char *nieuwpad, unsigned int vlaggen);

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

       renameat():
           Vanaf glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Voor glibc 2.10:
               _ATFILE_SOURCE

       renameat2():
          _GNU_SOURCE

BESCHRIJVING

       rename() hernoemt een bestand, het naar andere mappen verplaatsend als nodig. Elke andere harde koppeling
       naar  het  bestand (gemaakt met link(2)) blijft onaangetast. Open bestandsindicatoren voor oudpad blijven
       ook onaangetast.

       Diverse beperkingen bepalen of de rename operatie wel of niet succesvol is: zie FOUTEN hieronder.

       Als nieuwpad al bestaat wordt het atomair vervangen zodat er geen enkel moment is waarop een ander proces
       dat toegang tot nieuwpad probeert te krijgen het zal missen. Hoewel er  mogelijk  een  venster  kan  zijn
       waarin beiden oudpad en nieuwpad naar het bestand wijzen dat hernoemd wordt.

       Als  oudpad  en nieuwpad bestaande harde verwijzingen naar hetzelfde bestand zijn, dan doet rename() niks
       en geeft een succes status terug.

       Als nieuwpad bestaat maar de handeling faalt om een of andere reden, dan garandeert rename(), nieuwpad op
       zijn plaats te laten.

       oudpad kan een map specificeren. In dit geval moet of nieuwpad niet bestaan of een lege map specificeren.

       Als oudpad naar een  symbolische  link  wijst,  wordt  de  koppeling  hernoemd;  als  nieuwpad  naar  een
       symbolische link wijst wordt de koppeling overschreven.

   renameat()
       De  renameat()  systeem  aanroep  werkt  op  exact  dezelfde  manier  a;ls rename(), behalve voor de hier
       beschreven verschillen.

       Als de padnaam gegeven in oudpad relatief is, dan wordt deze geïnterpreteerd als  relatief  ten  opzichte
       van  de  map  aangewezen door de bestandsindicator oud_bes_ind (in plaats van relatief aan de werkmap van
       het aanroepende proces, zoals gedaan door rename() voor een relatieve padnaam).

       Als  oudpad  relatief  is  en  oud_bes_ind   de  speciale  waarde  AT_FDCWD  heeft,  dan   wordt   oudpad
       geïnterpreteerd als relatief aan de werkmap van het aanroepende proces (zoals rename()).

       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.

       Zie openat(2) voor een uitleg over de noodzaak van renameat().

   renameat2()
       renameat2() heeft een additioneel vlaggen argument.   Een  renameat2()   aanroep  met  een  nul   vlaggen
       argument is equivalent met renameat().

       Het vlaggen argument is een bit masker bestaande uit nul of meer van de volgende vlaggen:

       RENAME_EXCHANGE
              Verwissel  oudpad  en nieuwpad atomair. Beide padnamen moeten bestaan maar mogen van verschillende
              typen zijn (b.v. een zou een niet-lege map kunnen zijn en de andere een symbolische verwijzing).

       RENAME_NOREPLACE
              Overschrijf nieuwpad niet bij het hernoemen. Geef een fout terug als nieuwpad al bestaat.

              RENAME_NOREPLACE kan niet gebruikt worden samen met RENAME_EXCHANGE.

              RENAME_NOREPLACE vereist ondersteuning door het onderliggende bestandssysteem. Ondersteuning  door
              verschillende bestandssystemen wordt als volgt toegevoegd:

              •  ext4 (Linux 3.15);

              •  btrfs, tmpfs, en cifs (Linux 3.17);

              •  xfs (Linux 4.0);

              •  Ondersteuning  voor  veel andere bestandssystemen werd toegevoegd in Linux 4.9, inclusief ext2,
                 minix, reiserfs, jfs, vfat en bpf.

       RENAME_WHITEOUT (sinds Linux 3.18)
              Deze operatie is alleen logisch voor overlappende/eenheid bestandssysteem implementaties.

              Opgeven van RENAME_WHITEOUT creëert een "whiteout" object aan  het  begin  van  het  hernoemen  op
              hetzelfde tijdstip als het uitvoeren van het hernoemen. De hele operatie is atomair, zodat als het
              hernoemen succesvol is de "whiteout" ook zal zijn aangemaakt.

              Een  "whiteout"  is  een  object  met  een  speciale  betekenis in eenheid/overlap bestandssysteem
              constructies. In deze constructies, bestaan meerdere lagen en alleen de bovenste zal  ooit  worden
              gewijzigd.  Een "whiteout" op een bovenste laag zal een overeenkomend bestand effectief verstoppen
              in een lagere laag, er voor zorgende dat het bestand verschijnt alsof het niet bestaat.

              Wanneer een bestaand bestand op de lagere laag werd hernoemd, dan  wordt  deze  allereerst  omhoog
              gekopieerd  (als  hij  al  niet  bestond op de hogere laag) en vervolgens gehernoemd op de hogere,
              lees-schrijf laag. Tegelijkertijd moet het bron bestand ge-"whiteout" zijn (zodat  de  versie  van
              het bron bestand in de lagere laag onzichtbaar is). De gehele operatie dient atomair uitgevoerd te
              worden.

              Indien geen onderdeel van een eenheid/overlap, dan verschijnt de "whiteout" als een teken apparaat
              met  (0,0) als apparaat nummer. (Merk op dan andere eenheid/overlap implementaties andere methodes
              kunnen gebruiken om "whiteout" eenheden op te slaan; zo gebruikt  de  BSD  eenheid  koppeling  het
              speciale inode type DT_WHT die, hoewel ondersteund door een aantal bestandssystemen beschikbaar in
              Linux,  zoals  CODA  en XFS, wordt genegeerd door de ondersteunende code in de kernel, vanaf Linux
              4.19.)

              RENAME_WHITEOUT vereist dezelfde rechten als voor het aanmaken van een apparaat  node  (m.a.w,  de
              CAP_MKNOD capaciteit).

              RENAME_NOREPLACE kan niet gebruikt worden samen met RENAME_EXCHANGE.

              RENAME_NOREPLACE   vereist   ondersteuning   door  het  onderliggende  bestandssysteem.  Onder  de
              bestandssystemen die het ondersteunen zijn tmpfs (vanaf Linux 3.18), ext4 (vanaf Linux 3.18),  XFS
              (vanaf Linux 4.1), f2fs (vanaf Linux 4.2), btrfs (vanaf Linux 4.7), en ubifs (vanaf Linux 4.9).

EIND WAARDE

       Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.

FOUTEN

       EACCES Schrijf  toegang  is  niet  toegestaan  in de map die oudpad of nieuwpad bevat, of, zoeken is niet
              toegestaan voor een van de mappen in het pad voorvoegsel van oudpad of nieuwpad, of oudpad is  een
              map  en staat niet schrijftoestemming niet toe (die nodig is om de .. ingang te updaten). (Zie ook
              path_resolution(7).)

       EBUSY  Het hernoemen faalde omdat oudpad of nieuwpad een map is die in  gebruik  is  door  een  of  ander
              proces  (misschien  als  huidige werkmap, of als systeembeheerder map, of omdat het voor schrijven
              open was) of het is in gebruik door het systeem (bijvoorbeeld als aankoppel punt), en het  systeem
              beschouwd  dit  als  een fout. (Merk op dat er geen vereiste is om EBUSY terug te geven is in deze
              gevallen —er is niets mis met het hoe-dan-ook doen van de hernoeming— maar het wordt toegestaan om
              EBUSY terug te geven als het systeem dergelijke situaties niet anders kan afhandelen.)

       EDQUOT De gebruiker quota van schijf blokken op het bestandssysteem zijn uitgeput.

       EFAULT oudpad of nieuwpad wijzen buiten door u toegankelijke adres ruimte.

       EINVAL De nieuwe padnaam bevat een voorvoegsel van de oude, of, algemener, een poging werd gedaan om  een
              map een ondermap van zichzelf te maken.

       EISDIR nieuwpad is een bestaande map, maar oudpad is geen map.

       ELOOP  Teveel symbolische koppelingen werden tegengekomen bij het vaststellen van oudpad of nieuwpad.

       EMLINK oudpad  heeft  al  het  maximum aantal koppelingen naar zich toe, of het was een dir en de map die
              nieuwpad bevat heeft al het maximum aantal koppelingen.

       ENAMETOOLONG
              oudpad of nieuwpad was te lang.

       ENOENT De verwijzing aangeduid door oudpad bestaat niet of een map component in nieuwpad bestaat niet, of
              oudpad of nieuwpad zijn lege tekenreeksen.

       ENOMEM Onvoldoende kernelgeheugen voorhanden.

       ENOSPC Het apparaat waar het bestand op zit heeft geen ruimte voor een nieuwe map.

       ENOTDIR
              Een deel gebruikt als een map in oudpad of nieuwpad is in feite geen map. Of, oudpad is  een  map,
              en nieuwpad bestaat maar is geen map.

       ENOTEMPTY of EEXIST
              nieuwpad is een niet-lege map, het bevat andere ingangen dan "." en "..".

       EPERM of EACCES
              De  map die oudpad bevat heeft het plak-bit (S_ISVTX)  gezet enhet effectieve gebruiker ID is noch
              het gebruiker ID van het bestand dat  gewist moet worden noch dat van de map die het bevat, en het
              proces is niet gerechtigd (Linux: heeft de CAP_FOWNER capaciteit); of  nieuwpad  is  een  bestaand
              bestand  en  de map die het bevat heeft het plak-bit gezet  en het effectieve gebruiker ID van het
              proces is noch het gebruiker ID van het bestand dat moet worden vervangen noch dat van de map  die
              het  bevat, en het proces is niet gerechtigd (Linux: heeft de  CAP_FOWNER capaciteit niet); of het
              bestandssysteem dat oudpad bevat ondersteund het hernoemen van het dit type niet.

       EROFS  Het bestand staat op een alleen-lezen bestandssysteem.

       EXDEV  oudpad en nieuwpad zitten niet op hetzelfde aangekoppelde bestandssysteem. (Linux  staat  toe  dat
              bestandssystemen   worden   aangekoppeld  op  meerdere  punten,  maar  rename()  werkt  niet  over
              verschillende aankoppel punten, zelfs als hetzelfde bestandssysteem is gekoppeld op beiden.)

       De volgende extra fouten kunnen optreden voor renameat() en renameat2():

       EBADF  oudemapbi (nieuwpad)  is relatief maar oudemapbi (nieuwmapbi) is  geen geldige bestandsindicator.

       ENOTDIR
              oudpad is relatief en oudmapbi is een bestandsindicator die naar een bestand anders  dan  een  map
              wijst; of vergelijkbaar voor nieuwpad en nieuwmapbi

       De volgende extra fouten kunnen optreden voor renameat2():

       EEXIST vlaggen bevat RENAME_NOREPLACE en nieuwpad bestaat al.

       EINVAL Een ongeldig vlag werd in vlaggen opgegeven.

       EINVAL Zowel RENAME_NOREPLACE als RENAME_EXCHANGE werden opgegeven in vlaggen.

       EINVAL Zowel RENAME_NOREPLACE als RENAME_EXCHANGE werden opgegeven in vlaggen.

       EINVAL Het bestandssysteem ondersteund een van de vlaggen in vlaggen niet.

       ENOENT flags bevat RENAME_EXCHANGE en nieuwpad bestaat niet.

       EPERM  RENAME_WHITEOUT werd opgegeven in vlaggen, maar de aanroeper heeft deCAP_MKNOD capaciteit niet.

VOLDOET AAN

       rename()
              C11, POSIX.1-2008.

       renameat()
              POSIX.1-2008.

       renameat2()
              Linux.

GESCHIEDENIS

       rename()
              4.3BSD, C89, POSIX.1-2001.

       renameat()
              Linux 2.6.16, glibc 2.4.

       renameat2()
              Linux 3.15, glibc 2.28.

   Glibc-opmerkingen
       Op  oudere  kernels  waar  renameat()   niet  beschikbaar  is, valt de glibc omwikkelfunctie terug op het
       gebruik van rename().  Als oudpad and nieuwpad relative padnamen zijn, dan zal glibc padnamen construeren
       gebaseerd op  de symbolische koppelingen in /proc/self/fd die overeenkomen met de oudmapbi en  nieuwmapbi
       argumenten.

BUGS

       Op  NFS  bestandsystemen  kun  je niet aannemen dat als een handeling mislukte, het bestand niet hernoemd
       werd. Als de server de hernoem-handeling doet en gecrasht dan zal de herverstuurde  RPC  die  afgehandeld
       zal worden als de server het weer doet, een fout veroorzaken. Van toepassing wordt verwacht hiermee om te
       gaan. Zie link(2) voor gelijksoortige problemen.

ZIE OOK

       mv(1), rename(1), chmod(2), link(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.9.1                           2 mei 2024                                          rename(2)