oracular (2) unlink.2.gz

Provided by: manpages-it-dev_4.23.1-1_all bug

NOME

       unlink, unlinkat - Rimuove un nome ed eventualmente il file a cui si riferisce

LIBRERIA

       Libreria C standard (libc, -lc)

SINTASSI

       #include <unistd.h>

       int unlink(const char *pathname);

       #include <fcntl.h>           /* Definizione delle costanti AT_* */
       #include <unistd.h>

       int unlinkat(int dirfd, const char *pathname, int flags);

   Macro per test di funzionalità per glibc (vedere feature_test_macros(7)):

       unlinkat():
           A partire da glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Prima di glibc 2.10:
               _ATFILE_SOURCE

DESCRIZIONE

       unlink() cancella un nome dal filesystem. Se il nome è l'ultimo collegamento ad un file e nessun processo
       sta usando il file, allora viene cancellato anche il file stesso, e lo spazio occupato viene liberato.

       Se invece il nome è l'ultimo collegamento ad un file, ma il file è correntemente usato da un processo, il
       file viene rimosso solo quando viene chiuso il descrittore del file a cui fa riferimento.

       Se il nome si riferisce ad un collegamento simbolico, il collegamento viene rimosso.

       Se il nome si riferisce ad un socket, una fifo o un dispositivo, il nome viene rimosso, ma i processi che
       hanno l'oggetto aperto possono continuare ad usarlo.

   unlinkat()
       La chiamata di sistema unlinkat() opera esattamente nello stesso modo di unlink() o rmdir(2)  (a  seconda
       che flags includa l'opzione AT_REMOVEDIR) con le differenze di seguito descritte.

       Se  il nome di percorso dato in pathname è relativo, è interpretato come relativo alla directory a cui il
       descrittore di file dirfd fa riferimento (piuttosto che relativo alla directory di  lavoro  corrente  del
       processo chiamante, come fanno unlink() e rmdir(2) per un nome di percorso relativo).

       Se  il  nome  di  percorso  dato in pathname è relativo e dirfd è il valore speciale AT_FDCWD, pathname è
       interpretato come relativo alla directory di lavoro corrente del  processo  chiamante  (come  unlink()  e
       rmdir(2)).

       Se il nome di percorso dato in pathname è assoluto, dirfd è ignorato.

       flags  è  una  bitmask  che può essere specificata o come 0, o con valori di opzione uniti dall'operatore
       logico OR che controllano l'operazione di unlinkat(). Attualmente è definita solo una di tali opzioni:

       AT_REMOVEDIR
              Senza opzioni, unlinkat() compie l'equivalente di unlink() su pathname. Se è specificata l'opzione
              AT_REMOVEDIR, effettua l'equivalente di rmdir(2) su pathname.

       Vedere openat(2) per una spiegazione di quello che serve per unlinkat().

VALORE RESTITUITO

       In  caso  di  successo  restituisce  zero.  In caso di errore restituisce -1, e errno verrà impostato per
       indicare l'errore.

ERRORI

       EACCES L'accesso in scrittura alla directory contenente pathname non è  permesso  all'UID  effettivo  del
              processo,  o  una  delle  directory  in  pathname  non  ha  permesso  la  ricerca.  (Vedere  anche
              path_resolution(7).)

       EBUSY  Il file pathname non può essere scollegato poiché è usato dal sistema o da un altro processo;  per
              esempio,  è  un  punto  di  mount o il software client NFS lo ha creato per rappresentare un inode
              attivo che altrimenti sarebbe stato senza nome ("NFS silly renamed").

       EFAULT pathname punta al di fuori del proprio spazio di indirizzamento accessibile.

       EIO    Si è verificato errore I/O.

       EISDIR pathname fa riferimento a una directory. (Questo è il  valore  non-POSIX  restituito  da  Linux  a
              partire da 2.1.132.)

       ELOOP  Sono stati incontrati troppi collegamenti simbolici nel tradurre pathname.

       ENAMETOOLONG
              pathname era troppo lungo.

       ENOENT Un componente in pathname non esiste o è un collegamento simbolico scollegato, o pathname è vuoto.

       ENOMEM Insufficiente memoria disponibile per il kernel.

       ENOTDIR
              Un componente usato come directory in pathname non è, in effetti, una directory.

       EPERM  Il  sistema  non  permette lo scollegamento di directory, o lo scollegamento di directory richiede
              privilegi che il processo chiamante non ha. (Questo è l'errore  restituito  prescritto  da  POSIX:
              come notato in precedenza, Linux restituisce EISDIR in questo caso).

       EPERM (solo Linux)
              Il filesystem non permette lo scollegamento dei file.

       EPERM o EACCES
              La  directory  contenente  pathname  ha  lo  sticky  bit (S_ISVTX) impostato e l'effettivo UID del
              processo non è nè l'UID del file da cancellare nè quello della directory che  lo  contiene,  e  il
              processo non ha privilegi (Linux non ha capacità CAP_FOWNER).

       EPERM  Il file da scollegare è marcato come immutabile o di solo accodamento. (Si veda ioctl_iflags(2).)

       EROFS  pathname fa riferimento a un file su un filesystem in sola lettura.

       Gli stessi errori che si presentano per unlink() e rmdir(2) si possono presentare anche per unlinkat(). I
       seguenti errori aggiuntivi possono accadere per unlinkat():

       EBADF  pathname è relativo ma dirfd non è né AT_FDCWD né un descrittore di file valido.

       EINVAL Un valore di opzione non valido è stato specificato in flags.

       EISDIR pathname fa riferimento a una directory, e AT_REMOVEDIR non è stato specificato in flags.

       ENOTDIR
              pathname è relativo e dirfd è un descrittore di file che fa riferimento a un file oltre che a  una
              directory.

CONFORME A

       POSIX.1-2008.

STORIA

       unlink()
              SVr4, 4.3BSD, POSIX.1-2001.

       unlinkat()
              POSIX.1-2008. Linux 2.6.16, glibc 2.4.

   glibc
       Su  vecchi  kernel  dove  unlinkat()  non  è  disponibile, la funzione wrapper glibc retrocede all'uso di
       unlink() o rmdir(2). Dove pathname è un nome di percorso relativo, glibc costruisce un nome  di  percorso
       basato sul collegamento simbolico in /proc/self/fd che corrisponde all'argomento dirfd.

BUG

       Alcune ineguatezze nel protocollo sottostante NFS possono causare sparizioni inaspettate di file che sono
       ancora in uso.

VEDERE ANCHE

       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)

TRADUZIONE

       La   traduzione   italiana   di   questa  pagina  di  manuale  è  stata  creata  da  Goffredo  Baroncelli
       <kreijack@usa.net>, Giulio Daprelà <giulio@pluto.it>, Marco Curreli <marcocurreli@tiscali.it> e  Giuseppe
       Sacco <eppesuig@debian.org>

       Questa   traduzione   è  documentazione  libera;  leggere  la  GNU  General  Public  License  Versione  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  o  successiva  per  le  condizioni  di  copyright.   Non  ci
       assumiamo alcuna responsabilità.

       Per  segnalare  errori  nella  traduzione  di  questa  pagina  di  manuale inviare un messaggio a ⟨pluto-
       ildp@lists.pluto.it⟩.