unlink(2) System Calls Manual unlink(2) NOME unlink, unlinkat - Rimuove un nome ed eventualmente il file a cui si riferisce LIBRARY Standard C library (libc, -lc) SINTASSI #include int unlink(const char *pathname); #include /* Definizione delle costanti AT_* */ #include int unlinkat(int dirfd, const char *pathname, int flags); Macro per test di funzionalita 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 e 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 e l'ultimo collegamento ad un file, ma il file e 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 e relativo, e 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 e relativo e dirfd e il valore speciale AT_FDCWD, pathname e interpretato come relativo alla directory di lavoro corrente del processo chiamante (come unlink() e rmdir(2)). Se il nome di percorso dato in pathname e assoluto, dirfd e ignorato. flags e una bitmask che puo essere specificata o come 0, o con valori di opzione uniti dall'operatore logico OR che controllano l'operazione di unlinkat(). Attualmente e definita solo una di tali opzioni: AT_REMOVEDIR Senza opzioni, unlinkat() compie l'equivalente di unlink() su pathname. Se e 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 verra impostato per indicare l'errore. ERRORI EACCES L'accesso in scrittura alla directory contenente pathname non e 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 puo essere scollegato poiche e usato dal sistema o da un altro processo; per esempio, e 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 e verificato errore I/O. EISDIR pathname refers to a directory. (This is the non-POSIX value returned since Linux 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 e un collegamento simbolico scollegato, o pathname e vuoto. ENOMEM Insufficiente memoria disponibile per il kernel. ENOTDIR Un componente usato come directory in pathname non e, 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 e 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 e ne l'UID del file da cancellare ne quello della directory che lo contiene, e il processo non ha privilegi (Linux non ha capacita CAP_FOWNER). EPERM Il file da scollegare e 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 e relativo ma dirfd non e ne AT_FDCWD ne un descrittore di file valido. EINVAL Un valore di opzione non valido e stato specificato in flags. EISDIR pathname fa riferimento a una directory, e AT_REMOVEDIR non e stato specificato in flags. ENOTDIR pathname e relativo e dirfd e un descrittore di file che fa riferimento a un file oltre che a una directory. STANDARDS 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 e disponibile, la funzione wrapper glibc retrocede all'uso di unlink() o rmdir(2). Dove pathname e 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 e stata creata da Goffredo Baroncelli , Giulio Daprela e Marco Curreli Questa traduzione e documentazione libera; leggere la GNU General Public License Versione 3 o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilita. Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a . Linux man-pages 6.06 31 ottobre 2023 unlink(2)