unlink(2) System Calls Manual unlink(2) NAAM unlink, unlinkat - verwijder een naam en mogelijk het bestand waarnaar het wijst BIBLIOTHEEK Standard C bibliotheek (libc, -lc) SAMENVATTING #include int unlink(const char *padnaam); #include /* Definitie van AT_* constanten */ #include int unlinkat(int mapbi, const char *padnaam, int vlaggen); Feature Test Macro's eisen in glibc (zie feature_test_macros(7)): unlinkat(): Vanaf glibc 2.10: _POSIX_C_SOURCE >= 200809L Voor glibc 2.10: _ATFILE_SOURCE BESCHRIJVING unlink() verwijderd een naam uit een bestandssysteem. Als die naam de laatste koppeling was van een bestand en geen enkel proces heeft het bestand open, dan wordt het bestand verwijderd en de ruimte die het innam wordt vrijgemaakt om hergebruikt te worden. Als de naam de laatste koppeling was naar het bestand maar er zijn nog processen die het bestand nog steeds open hebben, dan zal het bestand blijven bestaan totdat de laatste bestandindicator die ernaar verwijst gesloten is. Als de naam wijst naar een symbolische koppeling dan wordt die koppeling verwijderd. Als de naam wijst naar een `socket', een fifo of een apparaat dan wordt de naam ervoor verwijderd maar processen die het voorwerp open hebben mogen het blijven gebruiken. unlinkat() De unlinkat() systeem aanroep werkt op exact dezelfde manier zoals unlink() of rmdir(2) (afhankelijk van of de flags wel of niet de AT_REMOVEDIR vlag bevat) behalve voor de verschillen zoals hier beschreven. Als de padnaam gegeven in padnaam is relatief, dan wordt deze geinterpreteerd relatief aan de map zoals gerefereerd door de bestands beschrijving dirfd (liever dan relatief aan de huidige werkmap van het aanroepende proces, zoals gedaan door unlink() en rmdir(2) voor een relatieve padnaam). Als de padnaam gegeven in padnaam relatief is en dirfd is de speciale waarde AT_FDCWD, dan zal padnaam geinterpreteerd worden relatief aan de huidige werk map van het aanroepende proces (zoals unlink() en rmdir(2). Als de padnaam opgegeven in padnaam absoluut is, dan wordt mapbi genegeerd. vlaggen is een bit masker dat ofwel gespecificeerd worden als 0, of door de logische OF-bewerking op de waarden van de vlag die de operatie van unlinkat() bepalen. Op dit moment is alleen een zo'n vlag gedefinieerd: AT_REMOVEDIR Standaard zal unlinkat() het equivalent van unlink() op padnaam uitvoeren. Indien de AT_REMOVEDIR vlag werd gezet dan werkt het equivalent van rmdir(2) op padnaam. Zie openat(2) voor een uitleg over het gebruik van unlinkat(). EIND WAARDE Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet. FOUTEN EACCES Schrijf toegang in de map die padnaam bevat wordt niet toegestaan voor het geldende uid van het proces, of een van de mappen in padnaam liet zoek (voer-uit) toestemming niet toe. (Zie ook path_resolution(7).) EBUSY Het bestand padnaam kan niet ontkoppeld worden omdat het in gebruik is door het systeem of door een ander proces; bijvoorbeeld, het is een koppelpunt of NFS client software maakte het aan om een actieve maar anders naamloze inode te vertegenwoordigen ("NFS silly renamed"). EFAULT padnaam wijst buiten de voor u toegankelijke adresruimte. EIO Een Invoer/Uitvoer fout trad op. EISDIR padnaam wijst naar een map. (Dit is de niet-POSIX waarde teruggegeven sinds Linux 2.1.132.) ELOOP Teveel symbolische koppelingen werden tegengekomen bij het vertalen van padnaam. ENAMETOOLONG padnaam was te lang. ENOENT Een deel in padnaam bestaat niet of is een loshangende symbolische koppeling, of padnaam is leeg. ENOMEM Onvoldoende kernelgeheugen voorhanden. ENOTDIR Een onderdeel gebruikt als map in padnaam is in feite geen map. EPERM Het systeem staat ontkoppelen van mappen niet toe, of het ontkoppelen van mappen behoeft privileges die het aanroepende proces niet heeft. (Dit is de voorgeschreven POSIX fout waarde; zoals hierboven beschreven zal Linux in dit geval EISDIR terug geven.) EPERM (alleen Linux) Het bestandssysteem staat ontkoppeling van bestanden niet toe. EPERM of EACCES De map waar padnaam in zit heeft het sticky-bit (S_ISVTX) aan staan en het geldende UID van het proces is noch het UID van het bestand dat verwijderd zou worden noch dat van de map waar het in zit en het proces is niet geprivilegieerd (Linux: heeft niet de CAP_FOWNER capaciteit). EPERM Het te ontkoppelen bestand is gemarkeerd als onveranderlijk of alleen-toevoegen. (Zie ioctl_iflags(2).) EROFS padnaam verwijst naar een bestand op een alleen-lezen bestandsysteem. Dezelfde fouten die optreden in unlink() en rmdir(2) kunnen ook optreden in unlinkat(). De volgende additionele fouten kunnen optreden in unlinkat(): EBADF padnaam is relatief en mapbi is noch AT_FDCWD noch een geldige bestandsindicator. EINVAL Een ongeldige vlag werd opgegeven in vlaggen. EISDIR mapbi wijst naar een map, en AT_REMOVEDIR werd in vlaggen niet opgegeven. ENOTDIR padnaam is relatief en mapbi is een bestandsindicator die naar een bestand wijst die geen map is. VOLDOET AAN POSIX.1-2008. GESCHIEDENIS unlink() SVr4, 4.3BSD, POSIX.1-2001. unlinkat() POSIX.1-2008. Linux 2.6.16, glibc 2.4. glibc Op oudere kernels waar unlinkat() niet beschikbaar is, valt de glibc omwikkel functie terug op het gebruik van unlink of rmdir(2). Wanneer padnaam een relatieve padnaam is, dan construeert glibc een padnaam gebaseerd op de symbolische koppeling in /proc/self/fd overeenkomende met het dirfd argument. BUGS Ongelukkigheden in het protocol waar NFS op is gebaseerd kunnen het onverwacht verdwijnen van bestanden veroorzaken die nog steeds gebruikt worden. ZIE OOK rm(1), unlink(1), chmod(2), link(2), mknod(2), open(2), rename(2), rmdir(2), mkfifo(3), remove(3), path_resolution(7), symlink(7) VERTALING De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema , Mario Blattermann en Luc Castermans 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 . Linux man-pages 6.06 31 oktober 2023 unlink(2)