bionic (2) unlink.2.gz

Provided by: manpages-it_3.73-2_all bug

NOME

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

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à richieste per glibc (si veda feature_test_macros(7)):

       unlinkat():
           A partire da glibc 2.10:
               _XOPEN_SOURCE >= 700 || _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 viene restituito zero; altrimenti viene  restituito  il  valore  -1,  e  errno  viene
       impostato di conseguenza.

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
              pathnameera 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).

       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  dirfd non è 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.

VERSIONS

       unlinkat() è stato aggiunto a Linux nel kernel 2.6.16; il supporto per le librerie  è  stato  aggiunto  a
       glibc nella versione 2.4.

CONFORME A

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

       unlinkat(): POSIX.1-2008.

NOTE

   Note su glibc
       Su  vecchi  kernel  dove  unlinkat()  non  è  disponibile, la funzione wrapper glibc retrocede all'uso di
       unlink(2) 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),   chmod(2),   link(2),   mknod(2),   open(2),   rename(2),   rmdir(2),    mkfifo(3),    remove(3),
       path_resolution(7), symlink(7)

COLOPHON

       Questa  pagina fa parte del rilascio 3.73 del progetto Linux man-pages.  Una descrizione del progetto, le
       istruzioni per la  segnalazione  degli  errori,  e  l'ultima  versione  di  questa  pagina  si  trova  su
       http://www.kernel.org/doc/man-pages/.

       La  versione  italiana  fa  parte  del  pacchetto  man-pages-it  v.  3.73, a cura di: ILDP "Italian Linux
       Documentation Project" http://www.pluto.it/ildp
       Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/
       Segnalare eventuali errori di traduzione a ildp@pluto.it