Scroll to navigation

unlink(2) System Calls Manual unlink(2)

NAVN

unlink, unlinkat - slet et navn og måske filen navnet refererer til

BIBLIOTEK

C-standardbibliotek (libc, -lc)

SYNOPSIS

#include <unistd.h>
int unlink(const char *stinavn);
#include <fcntl.h>           /* Definition af AT_*-konstanter */
#include <unistd.h>
int unlinkat(int dirfd, const char *stinavn, int flag);

Feature Test Macro Requirements for glibc (se feature_test_macros(7)):

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 stinavnet angivet i pathname er relativt, så fortolkes det relativt til mappen refereret til af fildeskriptoren dirfd (frem for relativt til den aktuelle arbejdsmappe for den kaldende proces, som det gøres af unlink() og rmdir(2) for et relativt stinavn.

Hvis stinanvet angivet i stinavn er relativt og dirfd er den specielle værdi AT_FDCWD, så fortolkes stinavn relativt til den nuværende arbejdsmappe for den kaldende proces (som unlink() og rmdir(2)).

Hvis stinavnet angivet i stinavn er absolut, 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:

Som standard udfører unlinkat() det samme som unlink() på stinavn. Hvis flaget AT_REMOVEDIR er angivet udføres det samme som rmdir(2)stinavn.

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

Skriveadgang til mappen indeholdende stinavn er ikke tilladt for processens effektive UID, eller en af mapperne i stinavn tillod ikke søgning. (Se også path_resolution(7)).
Filen stinavn kan ikke få fjernet henvisningen, da den bruges af systemet eller en anden proces; for eksempel, er det et monteringspunkt eller NFS-klientprogrammet oprettet for at repræsentere en aktiv men ellers navneløs iknude (»NFS silly renamed«).
stinavn peger uden for dit tilgængeilge adresserum.
Der opstod en I/O-fejl.
stinavn refererer til en mappe. (Dette er ikke-POSIX-værdien returneret siden Linux 2.1.132).
For mange symbolske henvisninger blev mødt under oversættelse af stinavn.
stinavn var for langt.
En komponent i stinavn findes ikke eller er en hængende symbolsk henvisning, eller stinavn er tom.
Utilstrækkelig kernehukommelse var tilgængelig.
En kompoent brugt som en mappe i stinavn er ikke, reelt, en mappe.
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).
Filsystemet tillader ikke fjernelse af filhenvisninger.
Mappen indeholdende stinavn 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).
Filen der skal have fjernet henvisningen er markeret som uforanderlig eller tilføj-kun. (Se FS_IOC_SETFLAGS(2const)).
stinavn 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():

stinavn er relativ men dirfd er hverken AT_FDCWD eller en gyldig fildeskriptor.
En ugyldig flagværdi blev angivet i flags.
stinavn refererer til en mappe, og AT_REMOVEDIR var ikke angivet i flag.
stinavn er relativ og dirfd er en fildeskriptor, der referer til en fil, der ikke er en mappe.

STANDARDER

POSIX.1-2008.

HISTORIK

SVr4, 4.3BSD, POSIX.1-2001.
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 stinavn er et relativt stinavn, 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.

13. juni 2024 Linux man-pages 6.9.1