X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=filedir.tex;h=dea3f7fcfbcf5b9816129c2f9a206131fb0280df;hp=37ca3b647e17385c6c54a6e0324bfb3a89dd5f80;hb=9b7af600ff0f73bc946c9d160c320667c7a91347;hpb=88d22f4971adcbdb816c405a1375ae0a8d57bdde diff --git a/filedir.tex b/filedir.tex index 37ca3b6..dea3f7f 100644 --- a/filedir.tex +++ b/filedir.tex @@ -758,8 +758,8 @@ con un OR aritmetico dei valori dalle costanti riportate nell'elenco seguente: e \param{data} vengono ignorati. In sostanza quello che avviene è che in corrispondenza del \textit{pathname} - indicato da \param{target} viene montato \itindex{inode} l'\textit{inode} - di \param{source}, così che la porzione di albero dei file presente sotto + indicato da \param{target} viene montato l'\textit{inode} di \param{source}, + così che la porzione di albero dei file presente sotto \param{source} diventi visibile allo stesso modo sotto \param{target}. Trattandosi esattamente dei dati dello stesso filesystem, ogni modifica fatta in uno qualunque dei due rami di albero sarà visibile @@ -769,9 +769,9 @@ con un OR aritmetico dei valori dalle costanti riportate nell'elenco seguente: Dal punto di vista del VFS l'operazione è analoga al montaggio di un filesystem proprio nel fatto che anche in questo caso si inserisce in corrispondenza della \textit{dentry} di \texttt{target} un diverso - \itindex{inode} \textit{inode}, che stavolta, invece di essere quello della - radice del filesystem indicato da un file di dispositivo, è quello di una - directory già montata. + \textit{inode}, che stavolta, invece di essere quello della radice del + filesystem indicato da un file di dispositivo, è quello di una directory già + montata. Si tenga presente che proprio per questo sotto \param{target} comparirà il contenuto che è presente sotto \param{source} all'interno del filesystem in @@ -856,9 +856,8 @@ con un OR aritmetico dei valori dalle costanti riportate nell'elenco seguente: di dispositivo eventualmente presenti su di esso. L'opzione viene usata come misura di precauzione per rendere inutile la presenza di eventuali file di dispositivo su filesystem che non dovrebbero contenerne.\footnote{si ricordi - che le convenzioni del \itindex{Filesystem~Hierarchy~Standard~(FHS)} - \textit{Linux Filesystem Hierarchy Standard} richiedono che questi siano - mantenuti esclusivamente sotto \texttt{/dev}.} + che le convenzioni del \textit{Linux Filesystem Hierarchy Standard} + richiedono che questi siano mantenuti esclusivamente sotto \texttt{/dev}.} Viene utilizzata, assieme a \const{MS\_NOEXEC} e \const{MS\_NOSUID}, per fornire un accesso più controllato a quei filesystem di cui gli utenti hanno @@ -1284,6 +1283,7 @@ trattazione, di queste funzioni, rimandando al manuale della \acr{glibc} % TODO (bassa priorità) documentare ? swapon e swapoff (man 2 ...) + \section{La gestione di file e directory} \label{sec:file_dir} @@ -1297,7 +1297,6 @@ directory di lavoro e le funzioni per la gestione di file speciali e temporanei. - \subsection{La gestione dei nomi dei file} \label{sec:link_symlink_rename} @@ -2014,10 +2013,9 @@ sez.~\ref{sec:files_std_interface}. La prima funzione di questa interfaccia è La funzione apre un \textit{directory stream} per la directory \param{dirname}, ritornando il puntatore ad un oggetto di tipo \type{DIR} (che -è il \index{tipo!opaco} tipo opaco usato dalle librerie per gestire i -\textit{directory stream}) da usare per tutte le operazioni successive, la -funzione inoltre posiziona lo \textit{stream} sulla prima voce contenuta nella -directory. +è il tipo opaco usato dalle librerie per gestire i \textit{directory stream}) +da usare per tutte le operazioni successive, la funzione inoltre posiziona lo +\textit{stream} sulla prima voce contenuta nella directory. Si tenga presente che comunque la funzione opera associando il \textit{directory stream} ad un opportuno file descriptor sottostante, sul @@ -2059,8 +2057,7 @@ La funzione restituisce il file descriptor associato al \textit{directory stream} \param{dir}. Di solito si utilizza questa funzione in abbinamento a funzioni che operano sui file descriptor, ad esempio si potrà usare \func{fstat} per ottenere le proprietà della directory, o \func{fchdir} per -spostare su di essa la directory di lavoro (vedi -sez.~\ref{sec:file_work_dir}). +spostare su di essa la directory di lavoro (vedi sez.~\ref{sec:file_work_dir}). Viceversa se si è aperto un file descriptor corrispondente ad una directory è possibile associarvi un \textit{directory stream} con la funzione @@ -2151,12 +2148,12 @@ prototipo è: \func{readdir}.} \end{funcproto} -La funzione restituisce in \param{result} come \itindex{value~result~argument} -\textit{value result argument} l'indirizzo della struttura \struct{dirent} -dove sono stati salvati i dati, che deve essere allocata dal chiamante, ed il -cui indirizzo deve essere indicato con l'argomento \param{entry}. Se si è -raggiunta la fine del \textit{directory stream} invece in \param{result} viene -restituito il valore \val{NULL}. +La funzione restituisce in \param{result} come \textit{value result argument} +l'indirizzo della struttura \struct{dirent} dove sono stati salvati i dati, +che deve essere allocata dal chiamante, ed il cui indirizzo deve essere +indicato con l'argomento \param{entry}. Se si è raggiunta la fine del +\textit{directory stream} invece in \param{result} viene restituito il valore +\val{NULL}. \begin{figure}[!htb] \footnotesize \centering @@ -2380,10 +2377,10 @@ restituendo un valore positivo, nullo o negativo per indicarne l'ordinamento; alla fine l'indirizzo della lista ordinata dei puntatori alle strutture \struct{dirent} viene restituito nell'argomento \param{namelist}.\footnote{la funzione alloca automaticamente la lista, e - restituisce, come \itindex{value~result~argument} \textit{value result - argument}, l'indirizzo della stessa; questo significa che \param{namelist} - deve essere dichiarato come \code{struct dirent **namelist} ed alla funzione - si deve passare il suo indirizzo.} + restituisce, come \textit{value result argument}, l'indirizzo della stessa; + questo significa che \param{namelist} deve essere dichiarato come + \code{struct dirent **namelist} ed alla funzione si deve passare il suo + indirizzo.} \itindend{directory~stream} @@ -2756,10 +2753,9 @@ serie 2.4 alla serie 2.6 è stata aumentata a 32 bit la dimensione del tipo \type{dev\_t}, con delle dimensioni passate a 12 bit per il \itindex{major~number} \textit{major number} e 20 bit per il \itindex{minor~number} \textit{minor number}. La transizione però ha -comportato il fatto che \type{dev\_t} è diventato un \index{tipo!opaco} tipo -opaco, e la necessità di specificare il numero tramite delle opportune macro, -così da non avere problemi di compatibilità con eventuali ulteriori -estensioni. +comportato il fatto che \type{dev\_t} è diventato un tipo opaco, e la +necessità di specificare il numero tramite delle opportune macro, così da non +avere problemi di compatibilità con eventuali ulteriori estensioni. Le macro sono definite nel file \headfile{sys/sysmacros.h},\footnote{se si usa la \acr{glibc} dalla versione 2.3.3 queste macro sono degli alias alle @@ -4190,14 +4186,14 @@ memoria virtuale e l'accesso ai file erano molto meno sofisticati e per ottenere la massima velocità possibile per i programmi usati più comunemente si poteva impostare questo bit. -L'effetto di questo bit era che il \index{segmento!testo} segmento di testo -del programma (si veda sez.~\ref{sec:proc_mem_layout} per i dettagli) veniva -scritto nella swap la prima volta che questo veniva lanciato, e vi permaneva -fino al riavvio della macchina (da questo il nome di \textsl{sticky bit}); -essendo la swap un file continuo o una partizione indicizzata direttamente si -poteva risparmiare in tempo di caricamento rispetto alla ricerca attraverso la -struttura del filesystem. Lo \textsl{sticky bit} è indicato usando la lettera -``\texttt{t}'' al posto della ``\texttt{x}'' nei permessi per gli altri. +L'effetto di questo bit era che il segmento di testo del programma (si veda +sez.~\ref{sec:proc_mem_layout} per i dettagli) veniva scritto nella swap la +prima volta che questo veniva lanciato, e vi permaneva fino al riavvio della +macchina (da questo il nome di \textsl{sticky bit}); essendo la swap un file +continuo o una partizione indicizzata direttamente si poteva risparmiare in +tempo di caricamento rispetto alla ricerca attraverso la struttura del +filesystem. Lo \textsl{sticky bit} è indicato usando la lettera ``\texttt{t}'' +al posto della ``\texttt{x}'' nei permessi per gli altri. Ovviamente per evitare che gli utenti potessero intasare la swap solo l'amministratore era in grado di impostare questo bit, che venne chiamato @@ -5363,16 +5359,16 @@ voci. La funzione ritorna un valore di tipo \type{acl\_t} da usare in tutte le altre funzioni che operano sulla ACL. La funzione si limita alla allocazione iniziale e non inserisce nessun valore nella ACL che resta vuota. -Si tenga presente che pur essendo \type{acl\_t} un \index{tipo!opaco} tipo -opaco che identifica ``\textsl{l'oggetto}'' ACL, il valore restituito dalla -funzione non è altro che un puntatore all'area di memoria allocata per i dati -richiesti. Pertanto in caso di fallimento verrà restituito un puntatore nullo -di tipo ``\code{(acl\_t) NULL}'' e si dovrà, in questa come in tutte le -funzioni seguenti che restituiscono un oggetto di tipo \type{acl\_t}, -confrontare il valore di ritorno della funzione con \val{NULL}.\footnote{a - voler essere estremamente pignoli si dovrebbe usare ``\code{(acl\_t) - NULL}'', ma è sufficiente fare un confronto direttamente con \val{NULL} - essendo cura del compilatore fare le conversioni necessarie.} +Si tenga presente che pur essendo \type{acl\_t} un tipo opaco che identifica +``\textsl{l'oggetto}'' ACL, il valore restituito dalla funzione non è altro +che un puntatore all'area di memoria allocata per i dati richiesti. Pertanto +in caso di fallimento verrà restituito un puntatore nullo di tipo +``\code{(acl\_t) NULL}'' e si dovrà, in questa come in tutte le funzioni +seguenti che restituiscono un oggetto di tipo \type{acl\_t}, confrontare il +valore di ritorno della funzione con \val{NULL}.\footnote{a voler essere + estremamente pignoli si dovrebbe usare ``\code{(acl\_t) NULL}'', ma è + sufficiente fare un confronto direttamente con \val{NULL} essendo cura del + compilatore fare le conversioni necessarie.} Una volta che si siano completate le operazioni sui dati di una ACL la memoria allocata per un oggetto \type{acl\_t} dovrà essere liberata esplicitamente @@ -5622,9 +5618,9 @@ contenente la rappresentazione in forma estesa della ACL passata come argomento, ed alloca automaticamente la memoria necessaria. Questa dovrà poi essere liberata, quando non più necessaria, con \func{acl\_free}. Se nell'argomento \param{len\_p} si passa un valore puntatore ad una variabile -intera in questa verrà restituita (come \itindex{value~result~argument} -\textit{value result argument}) la dimensione della stringa con la -rappresentazione testuale, non comprendente il carattere nullo finale. +intera in questa verrà restituita (come \textit{value result argument}) la +dimensione della stringa con la rappresentazione testuale, non comprendente il +carattere nullo finale. La seconda funzione, che permette di controllare con una gran dovizia di particolari la generazione della stringa contenente la rappresentazione @@ -6864,8 +6860,7 @@ opportuno dettagliare maggiormente. % Linux specific capabilities % \hline - \const{CAP\_IPC\_LOCK} & Effettuare il \textit{memory - locking} \itindex{memory~locking} con le + \const{CAP\_IPC\_LOCK} & Effettuare il \textit{memory locking} con le funzioni \func{mlock}, \func{mlockall}, \func{shmctl}, \func{mmap} (vedi sez.~\ref{sec:proc_mem_lock} e @@ -6875,8 +6870,7 @@ opportuno dettagliare maggiormente. per le operazioni sugli oggetti di intercomunicazione fra processi (vedi sez.~\ref{sec:ipc_sysv}).\\ - \const{CAP\_LEASE} & Creare dei \textit{file lease} - \itindex{file~lease} (vedi + \const{CAP\_LEASE} & Creare dei \textit{file lease} (vedi sez.~\ref{sec:file_asyncronous_lease}) pur non essendo proprietari del file (dal kernel 2.4).\\ @@ -7135,8 +7129,8 @@ della suddetta libreria attraverso l'opzione \texttt{-lcap}. \itindbeg{capability~state} Le funzioni dell'interfaccia alle \textit{capabilities} definite nelle bozze -dello standard POSIX.1e prevedono l'uso di un \index{tipo!opaco} tipo di dato -opaco, \type{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto +dello standard POSIX.1e prevedono l'uso di un tipo di dato opaco, +\type{cap\_t}, come puntatore ai dati mantenuti nel cosiddetto \textit{capability state},\footnote{si tratta in sostanza di un puntatore ad una struttura interna utilizzata dalle librerie, i cui campi non devono mai essere acceduti direttamente.} in sono memorizzati tutti i dati delle @@ -7383,9 +7377,8 @@ tab.~\ref{tab:cap_value_type}. La funzione \func{cap\_get\_flag} legge lo stato della capacità indicata dall'argomento \param{cap} all'interno dell'insieme indicato dall'argomento -\param{flag} e lo restituisce come \itindex{value~result~argument} -\textit{value result argument} nella variabile puntata -dall'argomento \param{value\_p}. Questa deve essere di tipo +\param{flag} e lo restituisce come \textit{value result argument} nella +variabile puntata dall'argomento \param{value\_p}. Questa deve essere di tipo \type{cap\_flag\_value\_t} ed assumerà uno dei valori di tab.~\ref{tab:cap_value_type}. La funzione consente pertanto di leggere solo lo stato di una capacità alla volta. @@ -7421,10 +7414,10 @@ testuale, è \funcd{cap\_to\_text}, il cui prototipo è: La funzione ritorna l'indirizzo di una stringa contente la descrizione testuale del contenuto del \textit{capability state} \param{caps} passato come argomento, e, qualora l'argomento \param{length\_p} sia diverso da \val{NULL}, -restituisce come \itindex{value~result~argument} \textit{value result - argument} nella variabile intera da questo puntata la lunghezza della -stringa. La stringa restituita viene allocata automaticamente dalla funzione e -pertanto dovrà essere liberata con \func{cap\_free}. +restituisce come \textit{value result argument} nella variabile intera da +questo puntata la lunghezza della stringa. La stringa restituita viene +allocata automaticamente dalla funzione e pertanto dovrà essere liberata con +\func{cap\_free}. La rappresentazione testuale, che viene usata anche dai programmi di gestione a riga di comando, prevede che lo stato venga rappresentato con una stringa di @@ -7523,9 +7516,8 @@ Linux ed i rispettivi prototipi sono: La prima funzione restituisce la stringa (allocata automaticamente e che dovrà essere liberata con \func{cap\_free}) che corrisponde al valore della capacità \param{cap}, mentre la seconda restituisce nella variabile puntata -da \param{cap\_p}, come \itindex{value~result~argument} \textit{value result - argument}, il valore della capacità rappresentata dalla -stringa \param{name}. +da \param{cap\_p}, come \textit{value result argument}, il valore della +capacità rappresentata dalla stringa \param{name}. Fin quei abbiamo trattato solo le funzioni di servizio relative alla manipolazione dei \textit{capability state} come strutture di dati;