NOME
symlink, symlinkat − crea un nuovo nome per un file
SINTASSI
#include <unistd.h>
int symlink(const char *target, const char *linkpath);
#include <fcntl.h> /* Definition of AT_* constants */ #include <unistd.h>
int symlinkat(const char *target, int newdirfd, const char *linkpath);
Macro per test di funzionalità richieste per glibc (vedere feature_test_macros(7)):
symlink():
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || _POSIX_C_SOURCE >= 200112L
symlinkat():
A partire da glibc 2.10:
_XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
Prima di glibc 2.10:
_ATFILE_SOURCE
DESCRIZIONE
symlink() crea un collegamento simbolico con nome linkpath che contiene la stringa target.
I collegamenti simbolici sono interpretati all’esecuzione come se il contenuto del collegamento fosse stato sostituito nel percorso seguito per trovare un file o una directory.
Un collegamento simbolico può contenere .. come componente del percorso, che (se usato all’inizio del collegamento) fa riferimento alle directory superiori a quella nella quale risiede il collegamento.
Un collegamento simbolico (conosciuto anche come soft link) può puntare ad un file esistente o ad uno non esistente: in quest’ultimo caso è detto dangling link.
I permessi di un collegamento simbolico sono irrilevanti. Quando si segue il collegamento il proprietario viene ignorato: viene invece verificato quando si richiede la rimozione o la rinomina del collegamento che si trovi in una directory con lo sticky bit (S_ISVTX) impostato.
Se linkpath esiste non verrà sovrascritto.
symlinkat()
La chiamata di sistema symlinkat() opera esattamente
nello stesso modo di symlink(), tranne che per le
differenze di seguito descritte.
Se il nome di percorso dato in linkpath è relativo, è interpretato come relativo alla directory a cui il descrittore di file newdirfd fa riferimento (piuttosto che relativo alla directory di lavoro corrente del processo chiamante, come fa symlink() per un nome di percorso relativo).
Se linkpath è relativo e newdirfd è il valore speciale AT_FDCWD, linkpath è interpretato come relativo alla directory di lavoro corrente del processo chiamante (come symlink()).
Se linkpath è assoluto, newdirfd è ignorato.
VALORE RESTITUITO
In caso di successo viene restituito zero, altrimenti verrà restituito −1 e errno verrà impostato di conseguenza.
ERRORI
EACCES |
Non è possibile l’accesso in scrittura alla directory contenente linkpath, o una delle directory contenute nel prefisso del percorso di linkpath non ha il permesso di ricerca. (Vedere anche path_resolution(7).) | ||
EDQUOT |
La quota di risorse dell’utente sul filesystem è esaurita. Le risorse possono essere inode o blocchi del disco, a seconda dell’implementazione del filesystem. | ||
EEXIST |
linkpath esiste già. | ||
EFAULT |
target o linkpath puntano fuori dallo spazio di indirizzamento accessibile. | ||
EIO |
Si è verificato un errore di I/O. | ||
ELOOP |
Si sono incontrati troppi collegamenti simbolici nella risoluzione di linkpath. |
ENAMETOOLONG
target o linkpath è troppo lungo.
ENOENT |
Una directory contenuta in linkpath non esiste o è un collegamento simbolico scollegato, o target è una stringa vuota. | ||
ENOMEM |
Insufficente memoria disponibile per il kernel. | ||
ENOSPC |
Il dispositivo contenente il file non ha spazio per la nuova directory. |
ENOTDIR
Un elemento usato come directory in linkpath non è, in effetti, una directory.
EPERM |
Il filesystem contenente linkpath non supporta la creazione di collegamenti simbolici. | ||
EROFS |
linkpath è contenuto in un filesystem in sola lettura. |
Altri errori si possono presentare per symlinkat():
EBADF |
newdirfd non è un descrittore di file valido. | ||
ENOENT |
linkpath è un percorso relativo e newdirfd fa riferimento a una directory che è stata eliminata. |
ENOTDIR
linkpath è relativo e newdirfd è un descrittore di file fa riferimento a un file anziché a una directory.
VERSIONI
symlinkat() è stato aggiunto a Linux nel kernel 2.6.16; il supporto per le librerie è stato aggiunto a glibc nella versione 2.4.
CONFORME A
symlink(): SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008.
symlinkat(): POSIX.1-2008.
NOTE
Non viene effettuato nessun controllo su target.
La cancellazione del nome a cui fa riferimento un collegamento simbolico cancellerà il file (a meno che esso non abbia altri collegamenti fisici). Se non si desidera questo comportamento usare link(2).
Note per
glibc
Su vecchi kernel dove symlinkat() non è
disponibile, la funzione wrapper glibc retrocede
all’uso di symlink(2). Dove linkpath
è un nome di percorso relativo, glibc costruisce un
nome di percorso basato sul collegamento simbolico in
/proc/self/fd che corrisponde all’argomento
newdirfd.
VEDERE ANCHE
ln(1), lchown(2), link(2), lstat(2), open(2), readlink(2), rename(2), unlink(2), 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 [AT] pluto.it