.\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Ian Jackson .\" and Copyright (C) 2006, 2014 Michael Kerrisk. .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified 1993-07-24 by Rik Faith .\" Modified 1996-09-08 by Arnt Gulbrandsen .\" Modified 1997-01-31 by Eric S. Raymond .\" Modified 2001-05-17 by aeb .\" Modified 2004-06-23 by Michael Kerrisk .\" .\" Tradotto da Goffredo Baroncelli 26-3-1998 .\" Aggiornamento a man-pages-2.11 di Giulio Daprelà .\" novembre 2005 .\" Aggiornamento a man-pages-2.26 di Giulio Daprelà - aprile 2006 .\" Aggiornamento a man-pages-2.38 di Giulio Daprelà - agosto 2006 .\" Aggiornamento a man-pages-3.53 di Marco Curreli .\" agosto 2013 .\" Aggiornamento a man-pages-3.61 di M. Curreli - marzo 2014 .\" Aggiornamento a man-pages-3.72 di M. Curreli - settembre 2014 .\" .TH UNLINK 2 2014-08-19 "Linux" "Linux Programmer's Manual" .SH NOME unlink, unlinkat \- Rimuove un nome ed eventualmente il file a cui si riferisce .SH SINTASSI .nf .B #include .sp .BI "int unlink(const char *" pathname ); .sp .BR "#include " "/* Definizione delle costanti AT_* */" .B #include .sp .BI "int unlinkat(int " dirfd ", const char *" pathname ", int " flags ); .fi .sp .in -4n Macro per test di funzionalità richieste per glibc (si veda .BR feature_test_macros (7)): .in .sp .BR unlinkat (): .PD 0 .ad l .RS 4 .TP 4 A partire da glibc 2.10: _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L .TP Prima di glibc 2.10: _ATFILE_SOURCE .RE .ad .PD .SH DESCRIZIONE .BR 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. .SS unlinkat() La chiamata di sistema .BR unlinkat () opera esattamente nello stesso modo di .BR unlink () o .BR rmdir (2) (a seconda che .I flags includa l'opzione .BR AT_REMOVEDIR ) con le differenze di seguito descritte. Se il nome di percorso dato in .I pathname è relativo, è interpretato come relativo alla directory a cui il descrittore di file .I dirfd fa riferimento (piuttosto che relativo alla directory di lavoro corrente del processo chiamante, come fanno .BR unlink () e .BR rmdir (2) per un nome di percorso relativo). Se il nome di percorso dato in .I pathname è relativo e .I dirfd è il valore speciale .BR AT_FDCWD , .I pathname è interpretato come relativo alla directory di lavoro corrente del processo chiamante (come .BR unlink () e .BR rmdir (2)). Se il nome di percorso dato in .I pathname è assoluto, .I dirfd è ignorato. .I 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 .BR unlinkat (). Attualmente è definita solo una di tali opzioni: .TP .B AT_REMOVEDIR Senza opzioni, .BR unlinkat () compie l'equivalente di .BR unlink () su .IR pathname . Se è specificata l'opzione .BR AT_REMOVEDIR , effettua l'equivalente di .BR rmdir (2) su .IR pathname . .PP Vedere .BR openat (2) per una spiegazione di quello che serve per .BR unlinkat (). .SH VALORE RESTITUITO In caso di successo viene restituito zero; altrimenti viene restituito il valore \-1, e .I errno viene impostato di conseguenza. .SH ERRORI .TP .B EACCES L'accesso in scrittura alla directory contenente .I pathname non è permesso all'UID effettivo del processo, o una delle directory in .I pathname non ha permesso la ricerca. (Vedere anche .BR path_resolution (7).) .TP .BR EBUSY Il file .I 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"). .TP .B EFAULT .I pathname punta al di fuori del proprio spazio di indirizzamento accessibile. .TP .B EIO Si è verificato errore I/O. .TP .B EISDIR .I pathname fa riferimento a una directory. (Questo è il valore non-POSIX restituito da Linux a partire da 2.1.132.) .TP .B ELOOP Sono stati incontrati troppi collegamenti simbolici nel tradurre .IR pathname . .TP .B ENAMETOOLONG .IR pathname "era troppo lungo." .TP .B ENOENT Un componente in .I pathname non esiste o è un collegamento simbolico scollegato, o .I pathname è vuoto. .TP .B ENOMEM Insufficiente memoria disponibile per il kernel. .TP .B ENOTDIR Un componente usato come directory in .I pathname non è, in effetti, una directory. .TP .B 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 .B EISDIR in questo caso). .TP .BR EPERM " (solo Linux)" Il filesystem non permette lo scollegamento dei file. .TP .BR EPERM " o " EACCES La directory contenente .I pathname ha lo sticky bit .RB ( 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à .BR CAP_FOWNER ). .TP .B EROFS .I pathname fa riferimento a un file su un filesystem in sola lettura. .PP Gli stessi errori che si presentano per .BR unlink () e .BR rmdir (2) si possono presentare anche per .BR unlinkat (). I seguenti errori aggiuntivi possono accadere per .BR unlinkat (): .TP .B EBADF .I dirfd non è un descrittore di file valido. .TP .B EINVAL Un valore di opzione non valido è stato specificato in .IR flags . .TP .B EISDIR .I pathname fa riferimento a una directory, e .B AT_REMOVEDIR non è stato specificato in .IR flags . .TP .B ENOTDIR .I pathname è relativo e .I dirfd è un descrittore di file che fa riferimento a un file oltre che a una directory. .SH VERSIONS .BR unlinkat () è stato aggiunto a Linux nel kernel 2.6.16; il supporto per le librerie è stato aggiunto a glibc nella versione 2.4. .SH CONFORME A .BR unlink (): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008. .\" SVr4 documenta condizioni di errore .\" aggiuntive EINTR, EMULTIHOP, ETXTBSY, ENOLINK. .BR unlinkat (): POSIX.1-2008. .SH NOTE .SS Note su glibc Su vecchi kernel dove .BR unlinkat () non è disponibile, la funzione wrapper glibc retrocede all'uso di .BR unlink (2) o .BR rmdir (2). Dove .I pathname è un nome di percorso relativo, glibc costruisce un nome di percorso basato sul collegamento simbolico in .IR /proc/self/fd che corrisponde all'argomento .IR dirfd . .SH BUG Alcune ineguatezze nel protocollo sottostante NFS possono causare sparizioni inaspettate di file che sono ancora in uso. .SH VEDERE ANCHE .BR rm (1), .BR chmod (2), .BR link (2), .BR mknod (2), .BR open (2), .BR rename (2), .BR rmdir (2), .BR mkfifo (3), .BR remove (3), .BR path_resolution (7), .BR symlink (7) .SH COLOPHON Questa pagina fa parte del rilascio 3.73 del progetto Linux .IR 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 .I man-pages-it v. 3.73, a cura di: ILDP "Italian Linux Documentation Project" \%http://www.pluto.it/ildp .br Per la traduzione in italiano si pu\(`o fare riferimento a http://www.pluto.it/ildp/collaborare/ .br Segnalare eventuali errori di traduzione a .IR ildp@pluto.it