unlink(2) System Calls Manual unlink(2) NUME unlink, unlinkat - terge un nume i, eventual, fiierul la care se refera BIBLIOTECA Biblioteca C standard (libc, -lc) SINOPSIS #include int unlink(const char *ruta); #include /* Definirea constantelor AT_* */ #include int unlinkat(int fd-director, const char *ruta, int fanioane); Cerine pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultai feature_test_macros(7)): unlinkat(): Incepand cu glibc 2.10 _POSIX_C_SOURCE >= 200809L Inainte de glibc 2.10: _ATFILE_SOURCE DESCRIERE unlink() terge un nume din sistemul de fiiere. Daca numele respectiv a fost ultima legatura la un fiier i niciun proces nu are fiierul deschis, fiierul este ters, iar spaiul pe care il folosea este disponibil pentru reutilizare. Daca numele a fost ultima legatura la un fiier, dar orice proces are inca fiierul deschis, fiierul va ramane in existena pana cand ultimul descriptor de fiier care se refera la acesta este inchis. In cazul in care numele se referea la o legatura simbolica, aceasta este eliminata. Daca numele se referea la un soclu, FIFO sau dispozitiv, numele acestuia este eliminat, dar procesele care au obiectul deschis pot continua sa il utilizeze. unlinkat() Apelul de sistem unlinkat() funcioneaza exact in acelai mod ca unlink() sau rmdir(2) (in funcie de faptul daca fanioane include sau nu fanionul AT_REMOVEDIR), cu excepia diferenelor descrise aici. Daca ruta data in ruta este relativa, atunci aceasta este interpretata in raport cu directorul la care se refera descriptorul de fiier fd-director ( i nu in raport cu directorul curent de lucru al procesului apelant, aa cum se procedeaza in unlink() i rmdir(2) pentru un nume de ruta relativ). Daca ruta data in ruta este relativa i fd-director este valoarea speciala AT_FDCWD, atunci ruta este interpretata relativ la directorul curent de lucru al procesului apelant (ca unlink() i rmdir(2)). Daca ruta este absoluta, atunci fd-director este ignorat. fanioane este o masca de bii care poate fi specificata fie ca 0, fie prin asocierea conform logicii SAU a valorilor fanioanelor care controleaza funcionarea unlinkat(). In prezent, este definit un singur astfel de fanion: AT_REMOVEDIR In mod implicit, unlinkat() efectueaza echivalentul lui unlink() pe ruta. Daca fanionul AT_REMOVEDIR este specificat, efectueaza echivalentul lui rmdir(2) pe ruta. A se vedea openat(2) pentru o explicaie a necesitaii unlinkat(). VALOAREA RETURNATA In caz de succes, se returneaza zero. In caz de eroare, se returneaza -1, iar errno este configurata pentru a indica eroarea. ERORI-IEIRE EACCES Accesul de scriere la directorul care conine ruta nu este permis pentru UID-ul efectiv al procesului, sau unul dintre directorii din ruta nu a permis permisiunea de cautare; (a se vedea i path_resolution(7)). EBUSY Fiierul ruta nu poate fi dezlegat deoarece este utilizat de sistem sau de un alt proces; de exemplu, este un punct de montare sau software-ul client NFS l-a creat pentru a reprezenta un nod-i activ, dar fara nume (,,NFS silly renamed"). EFAULT ruta indica in afara spaiului de adrese accesibil. EIO A aparut o eroare de In/Ie. EISDIR ruta se refera la un director; (aceasta este valoarea non-POSIX returnata de la Linux 2.1.132). ELOOP Prea multe legaturi simbolice au fost intalnite in traducerea rutei. ENAMETOOLONG ruta era prea lunga. ENOENT O componenta din ruta nu exista sau este o legatura simbolica rupta, sau ruta este goala. ENOMEM Nu a fost disponibila suficienta memorie pentru nucleu. ENOTDIR O componenta utilizata ca director in ruta nu este, de fapt, un director. EPERM Sistemul nu permite dezlegarea directoarelor sau dezlegarea directoarelor necesita privilegii pe care procesul apelant nu le are; (acesta este rezultatul de eroare prescris de POSIX; dupa cum s-a menionat mai sus, Linux returneaza EISDIR pentru acest caz). EPERM (numai in Linux) Sistemul de fiiere nu permite dezlegarea fiierelor. EPERM sau EACCES Directorul care conine ruta are bitul lipicios (S_ISVTX) activat i UID-ul efectiv al procesului nu este nici UID-ul fiierului care urmeaza sa fie ters, nici cel al directorului care il conine, iar procesul nu este privilegiat (Linux: nu are capacitatea CAP_FOWNER). EPERM Fiierul care urmeaza sa fie dezlegat este marcat ca fiind imuabil sau numai cu adaugare; (a se vedea FS_IOC_SETFLAGS(2const).) EROFS ruta se refera la un fiier pe un sistem de fiiere numai-pentru-citire. Aceleai erori care apar pentru unlink() i rmdir(2) pot aparea i pentru unlinkat(). Urmatoarele erori suplimentare pot aparea pentru unlinkat(): EBADF ruta este relativa, dar dirfd nu este nici AT_FDCWD, nici un descriptor de fiier valid. EINVAL O valoare nevalida de fanion a fost specificata in fanioane. EISDIR ruta se refera la un director, iar AT_REMOVEDIR nu a fost specificat in fanioane. ENOTDIR ruta este relativa i dirfd este un descriptor de fiier ce se refera la un alt fiier decat un director. STANDARDE POSIX.1-2008. ISTORIC unlink() SVr4, 4.3BSD, POSIX.1-2001. unlinkat() POSIX.1-2008. Linux 2.6.16, glibc 2.4. glibc Pe nucleele mai vechi in care unlinkat() nu este disponibil, funcia de invaluire glibc revine la utilizarea unlink() sau rmdir(2). Atunci cand ruta este o ruta relativa,, glibc construiete un nume de ruta bazat pe legatura simbolica din /proc/self/fd care corespunde argumentului fd-director. ERORI Neajunsurile din protocolul care sta la baza NFS pot provoca dispariia neateptata a fiierelor care sunt inca utilizate. CONSULTAI I 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) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.15 17 mai 2025 unlink(2)