table of contents
| unlink(2) | System Calls Manual | unlink(2) |
NAVN¶
unlink, unlinkat - slet et navn og måske filen navnet refererer til
BIBLIOTEK¶
Standard C library (libc, -lc)
SYNOPSIS¶
#include <unistd.h>
int unlink(const char *sti);
#include <fcntl.h> /* Definition af AT_*-konstanter */ #include <unistd.h>
int unlinkat(int dirfd, const char *sti, int flag);
unlinkat():
Siden glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Før glibc 2.10:
_ATFILE_SOURCE
BESKRIVELSE¶
unlink() sletter et navn fra filsystemet. Hvis det navn var den sidste henvisning til en fil og ingen processer har filen åben, så slettes filen og den brugte plads gøres tilgængelig for ny brug.
Hvis navnet var den sidste henvisning til en fil, men eventuelle processer stadig har filen åben, så vil filen fortsat eksistere indtil den sidste fildeskriptor, der refererer til den lukkes.
Hvis navnet refererede til en symbolsk henvisning, så fjernes henvisningen.
Hvis navnet refereret til en sokkel, FIFO, eller enhed, så fjernes navnet for denne men processer, der har objektet åbent kan fortsat bruge det.
unlinkat()¶
Systemkaldet unlinkat() fungerer på præcis samme måde som enten unlink() eller rmdir(2) (afhængig af hvorvidt flag inkluderer flaget AT_REMOVEDIR) undtagen for forskellene beskrevet her.
Hvis sti er relative så fortolkes den relativt til mappen refereret til af fildeskriptoren dirfd (frem for relativ til den nuværende arbejdsmappe for den kaldende proces, som gøres af unlink() og rmdir(2) for et relativt stinavn).
Hvis sti er relativ og dirfd er den specielle værdi AT_FDCWD, så fortolkes sti relativt til den nuværende arbejdsmappe for den kaldende proces (som unlink() og rmdir(2)).
Hvis sti er forældet, så ignoreres dirfd.
flag er en bitmaske der enten kan angives som 0, eller af ORing-samlende flag-værdier, der kontrollerer operationen af unlinkat(). I øjeblikket er kun et sådant flag defineret:
- AT_REMOVEDIR
- Som standard udfører unlinkat() det samme som unlink() på sti. Hvis flaget AT_REMOVEDIR er angivet udføres det samme som rmdir(2) på sti.
Se openat(2) for en forklaring på behovet for unlinkat().
RETURVÆRDI¶
Ved succes returneres nul. Ved fejl returneres -1 og errno angives for at indikere fejlen.
FEJL¶
- EACCES
- Skriveadgang til mappen indeholdende sti er ikke tilladt for processens effektive UID, eller en af mapperne i sti tillod ikke søgning. (Se også path_resolution(7)).
- EBUSY
- Henvisningen kan ikke fjernes på sti, da den bruges af systemet eller en anden proces; for eksempel er det et monteringspunkt eller NFS-klientprogrammet oprettede den, da den repræsenterer en aktiv men ellers navneløs iknude (»FS silly renamed«).
- EFAULT
- sti peger uden for dit tilgængelige adresserum.
- EIO
- Der opstod en I/O-fejl.
- EISDIR
- sti refererer til en mappe. (Dette er ikke-POSIX-værdien returneret siden Linux 2.1.132).
- ELOOP
- For mange symbolske henvisninger blev mødt under oversættelse af sti.
- ENAMETOOLONG
- sti var for langt.
- ENOENT
- En komponent i sti findes ikke eller er en hængende symbolsk henvisning, eller sti er tom.
- ENOMEM
- Utilstrækkelig kernehukommelse var tilgængelig.
- ENOTDIR
- En kompoent brugt som en mappe i sti er ikke, reelt, en mappe.
- EPERM
- Systemet tillader ikke at henvisning fjernes for mapper, eller fjernelse af henvisning for mapper kræver privilegier, som den kaldende proces ikke har. (Dette er den POSIX-foreskrevet fejlreturnering; som anført ovenfor, så returnerer Linux EISDIR i dette tilfælde).
- EPERM (kun Linux)
- Filsystemet tillader ikke fjernelse af filhenvisninger.
- EPERM eller EACCES
- Mappen indeholdende sti har den klæbende del (S_ISVTX) angivet og processens effektive UID er hverken UID'en for filen, der slettes, eller mappen der indeholder filen, og processen er ikke privilegeret (Linux: har ikke funktionen CAP_FOWNER).
- EPERM
- Filen der skal have fjernet henvisningen er markeret som uforanderlig eller tilføj-kun. (Se FS_IOC_SETFLAGS(2const)).
- EROFS
- sti refererer til en fil på et skrivebeskyttet filsystem..
De samme fejl der opstod for unlink() og rmdir(2) kan også opstå for unlinkat(). De følgende yderligere fejl kan opstå for unlinkat():
- EBADF
- sti er relativ men dirfd er hverken AT_FDCWD eller en en gyldig fildeskriptor.
- EINVAL
- En ugyldig flagværdi blev angivet i flags.
- EISDIR
- sti refererer til en mappe, og AT_REMOVEDIR var ikke angivet i flag.
- ENOTDIR
- sti er relativ og dirfd er en fildeskriptor, der refererer til en fil andet end en mappe.
STANDARDER¶
POSIX.1-2024.
HISTORIK¶
- unlink()
- SVr4, 4.3BSD, POSIX.1-2001.
- unlinkat()
- POSIX.1-2008. Linux 2.6.16, glibc 2.4.
glibc¶
På ældre kerner hvor unlinkat() er utilgængelig, falder glibc-omslagsfunktionen tilbage til brugen af unlink() eller rmdir(2). Når sti er relativ, så konstruerer glibc et stinavn baseret på den symbolske henvisning i /proc/self/fd, der svarer til argumentet dirfd.
FEJL¶
Ulykkeligheder i protokollen under NFS kan medføre uventede fravær af filer, der stadig er i brug.
SE OGSŶ
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)
OVERSÆTTELSE¶
Oversættere af denne manual til dansk Joe Dalton <joedalton2@yahoo.dk>
Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.
Hvis du støder på fejl i oversættelsen af denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.
| 8. februar 2026 | Linux man-pages 6.17 |