UNLINK(2)

NAAM
unlink, unlinkat - verwijder een naam en mogelijk het bestand waarnaar het wijst

SAMENVATTING
#include <unistd.h>

int unlink(const char *padnaam);

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

int unlinkat(int mapbi, const char *padnaam, int vlaggen);

    Test Macro´s 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 geïnterpreteerd 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 geïnterpreteerd worden relatief aan de huidige werk map van het aanroepende proces (zoals unlink() en rmdir(2).

Als pathname 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 door Linux sinds 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 deel 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
    mapbi is geen geldige bestandindicator.

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 bestandsindicatoor die naar een bestand wijst die geen map is.

VERSIES
unlinkat() werd toegevoegd in de Linux kernel 2.6.16; bibliotheek ondersteuning werd toegevoegd in glibc versie 2.4.

VOLDOET AAN
unlink(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.

unlinkat(): POSIX.1-2008.

OPMERKINGEN

  Glibc-opmerkingen
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)

COLOFON
Deze pagina is onderdeel van release 5.11 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.