X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=45aef2a94e1e95f2c3c589af5b0a173fa46a70f4;hp=7973c78c70fb656f2cea3340ae53858b7d96d135;hb=dc4eaddc9bad8eca47e81b003fefeccaa3372f48;hpb=3b0a632d62b0b9135a101007f0b66a67d433c1b8 diff --git a/filedir.tex b/filedir.tex index 7973c78..45aef2a 100644 --- a/filedir.tex +++ b/filedir.tex @@ -1451,9 +1451,9 @@ fanno comunque riferimento allo stesso \textit{inode} e quindi tutti otterranno lo stesso file. Quando si vuole aggiungere ad una directory una voce che faccia riferimento ad -un file già esistente nella modalità appena descritta, per ottenere quello che -viene denominato ``\textsl{collegamento diretto}'' (o \textit{hard link}), si -deve usare la funzione di sistema \funcd{link}, il cui prototipo è: +un file già esistente come appena descritto, per ottenere quello che viene +denominato ``\textsl{collegamento diretto}'' (o \textit{hard link}), si deve +usare la funzione di sistema \funcd{link}, il cui prototipo è: \begin{funcproto}{ \fhead{unistd.h} @@ -1469,19 +1469,22 @@ deve usare la funzione di sistema \funcd{link}, il cui prototipo è: (il numero massimo è specificato dalla variabile \const{LINK\_MAX}, vedi sez.~\ref{sec:sys_limits}). \item[\errcode{EPERM}] il filesystem che contiene \param{oldpath} e - \param{newpath} non supporta i collegamenti diretti, è una directory o non - si rispettano i criteri per i \textit{protected hardlink}.\footnotemark + \param{newpath} non supporta i collegamenti diretti, è una directory o per + \param{oldpath} non si rispettano i criteri per i \textit{protected + hardlink}.\footnotemark \item[\errcode{EXDEV}] i file \param{oldpath} e \param{newpath} non fanno riferimento ad un filesystem montato sullo stesso \textit{mount point}. - \end{errlist} ed inoltre \errval{EACCES}, \errval{EFAULT}, \errval{EIO}, - \errval{ELOOP}, \errval{ENAMETOOLONG}, \errval{ENOENT}, \errval{ENOMEM}, - \errval{ENOSPC}, \errval{ENOTDIR}, \errval{EROFS} nel loro significato - generico.} + \end{errlist} ed inoltre \errval{EACCES}, \errval{EDQUOT}, \errval{EFAULT}, + \errval{EIO}, \errval{ELOOP}, \errval{ENAMETOOLONG}, \errval{ENOENT}, + \errval{ENOMEM}, \errval{ENOSPC}, \errval{ENOTDIR}, \errval{EROFS} nel loro + significato generico.} \end{funcproto} \footnotetext{i \textit{protected hardlink} sono una funzionalità di - protezione introdotta con il kernel 3.16 (vedi sez..} + protezione introdotta con il kernel 3.16 (si veda + sez.~\ref{sec:procadv_security_misc} per i dettagli) che limita la capacità + di creare un \textit{hard link} ad un file qualunque.} La funzione crea in \param{newpath} un collegamento diretto al file indicato da \param{oldpath}. Per quanto detto la creazione di un nuovo collegamento @@ -1503,19 +1506,17 @@ riferimento ad essi all'interno dello stesso \textit{mount point}.\footnote{si tenga presente infatti, come detto in sez.~\ref{sec:filesystem_mounting}, che a partire dal kernel 2.4 uno stesso filesystem può essere montato più volte su directory diverse.} - La funzione inoltre opera sia sui file ordinari che sugli altri oggetti del filesystem, con l'eccezione delle directory. In alcune versioni di Unix solo l'amministratore è in grado di creare un collegamento diretto ad un'altra directory: questo viene fatto perché con una tale operazione è possibile creare dei \textit{loop} nel filesystem (vedi fig.~\ref{fig:file_link_loop}) -che molti programmi non sono in grado di gestire e la cui rimozione -diventerebbe piuttosto complicata.\footnote{in genere per questo tipo di - errori occorre eseguire il programma \cmd{fsck} per riparare il filesystem, - in quanto in caso di \textit{loop} la directory creata non sarebbe vuota e - non si potrebbe più rimuoverla.} +la cui rimozione diventerebbe piuttosto complicata.\footnote{occorrerebbe + infatti eseguire il programma \cmd{fsck} per riparare il filesystem, perché + in caso di \textit{loop} la directory non potrebbe essere più svuotata, + contenendo comunque se stessa, e quindi non potrebbe essere rimossa.} -Data la pericolosità di questa operazione, e vista che i collegamenti +Data la pericolosità di questa operazione, e visto che i collegamenti simbolici (che tratteremo a breve) ed i \textit{bind mount} (già visti in sez.~\ref{sec:filesystem_mounting}) possono fornire la stessa funzionalità senza questi problemi, nel caso di Linux questa capacità è stata completamente @@ -1597,6 +1598,8 @@ sistema che permette di creare un nuovo collegamento simbolico è {La funzione ritorna $0$ in caso di successo e $-1$ per un errore, nel qual caso \var{errno} assumerà uno dei valori: \begin{errlist} + \item[\errcode{EACCES}] o non si hanno i permessi sulla directory in cui + creare il \textit{link}. \item[\errcode{EEXIST}] esiste già un file \param{newpath}. \item[\errcode{ENOENT}] una componente di \param{newpath} non esiste o \param{oldpath} è una stringa vuota. @@ -1604,11 +1607,12 @@ sistema che permette di creare un nuovo collegamento simbolico è supporta i collegamenti simbolici. \item[\errcode{EROFS}] \param{newpath} è su un filesystem montato in sola lettura. - \end{errlist} ed inoltre \errval{EACCES}, \errval{EFAULT}, \errval{EIO}, + \end{errlist} ed inoltre \errval{EDQUOT}, \errval{EFAULT}, \errval{EIO}, \errval{ELOOP}, \errval{ENAMETOOLONG}, \errval{ENOMEM}, \errval{ENOSPC} e \errval{ENOTDIR} nel loro significato generico.} \end{funcproto} + La funzione crea un nuovo collegamento simbolico \param{newpath} che fa riferimento ad \param{oldpath}. Si tenga presente che la funzione non effettua nessun controllo sull'esistenza di un file di nome \param{oldpath},