Ulteriori indicizzazioni dei file.
authorSimone Piccardi <piccardi@gnulinux.it>
Mon, 16 Jul 2007 10:52:00 +0000 (10:52 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Mon, 16 Jul 2007 10:52:00 +0000 (10:52 +0000)
ipc.tex
sockctrl.tex
system.tex

diff --git a/ipc.tex b/ipc.tex
index df279c99e6653bd34d7692eed29572b0ed1e954b..6587147be3d2080830361b0e6ee7510b73441b71 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -3341,7 +3341,7 @@ POSIX.\footnote{in realt
 
 La libreria inoltre richiede la presenza dell'apposito filesystem di tipo
 \texttt{mqueue} montato su \file{/dev/mqueue}; questo può essere fatto
 
 La libreria inoltre richiede la presenza dell'apposito filesystem di tipo
 \texttt{mqueue} montato su \file{/dev/mqueue}; questo può essere fatto
-aggiungendo ad \file{/etc/fstab} una riga come:
+aggiungendo ad \conffile{/etc/fstab} una riga come:
 \begin{verbatim}
 mqueue   /dev/mqueue       mqueue    defaults        0      0
 \end{verbatim}
 \begin{verbatim}
 mqueue   /dev/mqueue       mqueue    defaults        0      0
 \end{verbatim}
@@ -3787,7 +3787,7 @@ questo di norma viene fatto aggiungendo una riga del tipo di:
 \begin{verbatim}
 tmpfs   /dev/shm        tmpfs   defaults        0      0
 \end{verbatim}
 \begin{verbatim}
 tmpfs   /dev/shm        tmpfs   defaults        0      0
 \end{verbatim}
-ad \file{/etc/fstab}. In realtà si può montare un filesystem \texttt{tmpfs}
+ad \conffile{/etc/fstab}. In realtà si può montare un filesystem \texttt{tmpfs}
 dove si vuole, per usarlo come RAM disk, con un comando del tipo:
 \begin{verbatim}
 mount -t tmpfs -o size=128M,nr_inodes=10k,mode=700 tmpfs /mytmpfs
 dove si vuole, per usarlo come RAM disk, con un comando del tipo:
 \begin{verbatim}
 mount -t tmpfs -o size=128M,nr_inodes=10k,mode=700 tmpfs /mytmpfs
index c5bfafc116399574e9ff88cf5e9d0a7be4721558..e3ad47bf642a158afd0ba4e5e2c769fc73175b6f 100644 (file)
@@ -85,19 +85,19 @@ funzioni di librerie utilizzate dai programmi, vale la pena fare una
 panoramica generale.  Originariamente la configurazione del \textit{resolver}
 riguardava esclusivamente le questioni relative alla gestione dei nomi a
 dominio, e prevedeva solo l'utilizzo del DNS e del file statico
 panoramica generale.  Originariamente la configurazione del \textit{resolver}
 riguardava esclusivamente le questioni relative alla gestione dei nomi a
 dominio, e prevedeva solo l'utilizzo del DNS e del file statico
-\file{/etc/hosts}.
+\conffile{/etc/hosts}.
 
 Per questo aspetto il file di configurazione principale del sistema è
 
 Per questo aspetto il file di configurazione principale del sistema è
-\file{/etc/resolv.conf} che contiene in sostanza l'elenco degli indirizzi IP
-dei server DNS da contattare; a questo si affianca il file
-\file{/etc/host.conf} il cui scopo principale è indicare l'ordine in cui
-eseguire la risoluzione dei nomi (se usare prima i valori di \file{/etc/hosts}
-o quelli del DNS). Tralasciamo i dettagli relativi alle varie direttive che
-possono essere usate in questi file, che si trovano nelle rispettive pagine di
-manuale.
+\conffile{/etc/resolv.conf} che contiene in sostanza l'elenco degli indirizzi
+IP dei server DNS da contattare; a questo si affianca il file
+\conffile{/etc/host.conf} il cui scopo principale è indicare l'ordine in cui
+eseguire la risoluzione dei nomi (se usare prima i valori di
+\conffile{/etc/hosts} o quelli del DNS). Tralasciamo i dettagli relativi alle
+varie direttive che possono essere usate in questi file, che si trovano nelle
+rispettive pagine di manuale.
 
 Con il tempo però è divenuto possibile fornire diversi sostituti per
 
 Con il tempo però è divenuto possibile fornire diversi sostituti per
-l'utilizzo delle associazione statiche in \file{/etc/hosts}, inoltre oltre
+l'utilizzo delle associazione statiche in \conffile{/etc/hosts}, inoltre oltre
 alla risoluzione dei nomi a dominio ci sono anche altri nomi da risolvere,
 come quelli che possono essere associati ad una rete (invece che ad una
 singola macchina) o ai gruppi di macchine definiti dal servizio
 alla risoluzione dei nomi a dominio ci sono anche altri nomi da risolvere,
 come quelli che possono essere associati ad una rete (invece che ad una
 singola macchina) o ai gruppi di macchine definiti dal servizio
@@ -107,16 +107,17 @@ NIS,\footnote{il \textit{Network Information Service} 
   \textit{netgroup}) varie macchine, centralizzando i servizi di definizione
   di utenti e gruppi e di autenticazione, oggi è sempre più spesso sostituito
   da LDAP.} o come quelli dei protocolli e dei servizi che sono mantenuti nei
   \textit{netgroup}) varie macchine, centralizzando i servizi di definizione
   di utenti e gruppi e di autenticazione, oggi è sempre più spesso sostituito
   da LDAP.} o come quelli dei protocolli e dei servizi che sono mantenuti nei
-file statici \file{/etc/protocols} e \file{/etc/services}.  Molte di queste
-informazioni non si trovano su un DNS, ma in una rete locale può essere molto
-utile centralizzare il mantenimento di alcune di esse su opportuni server.
-Inoltre l'uso di diversi supporti possibili per le stesse informazioni (ad
-esempio il nome delle macchine può essere mantenuto sia tramite
-\file{/etc/hosts}, che con il DNS, che con NIS) comporta il problema
-dell'ordine in cui questi vengono interrogati.\footnote{con le implementazioni
-  classiche i vari supporti erano introdotti modificando direttamente le
-  funzioni di libreria, prevedendo un ordine di interrogazione predefinito e
-  non modificabile (a meno di una ricompilazione delle librerie stesse).}
+file statici \conffile{/etc/protocols} e \conffile{/etc/services}.  Molte di
+queste informazioni non si trovano su un DNS, ma in una rete locale può essere
+molto utile centralizzare il mantenimento di alcune di esse su opportuni
+server.  Inoltre l'uso di diversi supporti possibili per le stesse
+informazioni (ad esempio il nome delle macchine può essere mantenuto sia
+tramite \conffile{/etc/hosts}, che con il DNS, che con NIS) comporta il
+problema dell'ordine in cui questi vengono interrogati.\footnote{con le
+  implementazioni classiche i vari supporti erano introdotti modificando
+  direttamente le funzioni di libreria, prevedendo un ordine di interrogazione
+  predefinito e non modificabile (a meno di una ricompilazione delle librerie
+  stesse).}
 
 \itindbeg{Name~Service~Switch}
 Per risolvere questa serie di problemi la risoluzione dei nomi a dominio
 
 \itindbeg{Name~Service~Switch}
 Per risolvere questa serie di problemi la risoluzione dei nomi a dominio
@@ -169,21 +170,21 @@ tab.~\ref{tab:sys_NSS_classes}.
   \label{tab:sys_NSS_classes}
 \end{table}
 
   \label{tab:sys_NSS_classes}
 \end{table}
 
-Il sistema  del \textit{Name Service Switch} è controllato dal  contenuto del
-file \file{/etc/nsswitch.conf}; questo contiene una riga\footnote{seguendo una
-  convezione  comune per  i  file  di configurazione  le  righe vuote  vengono
-  ignorate  e  tutto  quello  che  segue un  carattere  ``\texttt{\#}''  viene
-  considerato un  commento.} di configurazione per ciascuna  di queste classi,
-che  viene inizia  col nome  di tab.~\ref{tab:sys_NSS_classes}  seguito  da un
-carattere ``\texttt{:}'' e  prosegue con la lista dei  \textsl{servizi} su cui
-le  relative informazioni sono  raggiungibili, scritti  nell'ordine in  cui si
+Il sistema del \textit{Name Service Switch} è controllato dal contenuto del
+file \conffile{/etc/nsswitch.conf}; questo contiene una riga\footnote{seguendo
+  una convezione comune per i file di configurazione le righe vuote vengono
+  ignorate e tutto quello che segue un carattere ``\texttt{\#}'' viene
+  considerato un commento.} di configurazione per ciascuna di queste classi,
+che viene inizia col nome di tab.~\ref{tab:sys_NSS_classes} seguito da un
+carattere ``\texttt{:}'' e prosegue con la lista dei \textsl{servizi} su cui
+le relative informazioni sono raggiungibili, scritti nell'ordine in cui si
 vuole siano interrogati.
 
 vuole siano interrogati.
 
-Ogni  servizio è  specificato  a sua  volta  da un  nome, come  \texttt{file},
-\texttt{dns},  \texttt{db},  ecc.  che  identifica la  libreria  dinamica  che
-realizza l'interfaccia  con esso. Per  ciascun servizio se \texttt{NAME}  è il
-nome  utilizzato  dentro   \file{/etc/nsswitch.conf},  dovrà  essere  presente
-(usualmente  in   \file{/lib})  una  libreria   \texttt{libnss\_NAME}  che  ne
+Ogni servizio è specificato a sua volta da un nome, come \texttt{file},
+\texttt{dns}, \texttt{db}, ecc.  che identifica la libreria dinamica che
+realizza l'interfaccia con esso. Per ciascun servizio se \texttt{NAME} è il
+nome utilizzato dentro \conffile{/etc/nsswitch.conf}, dovrà essere presente
+(usualmente in \file{/lib}) una libreria \texttt{libnss\_NAME} che ne
 implementa le funzioni.
 
 In ogni caso, qualunque sia la modalità con cui ricevono i dati o il supporto
 implementa le funzioni.
 
 In ogni caso, qualunque sia la modalità con cui ricevono i dati o il supporto
@@ -1031,14 +1032,14 @@ colonna.
     \multicolumn{2}{|c|}{\textbf{Funzioni}}\\
     \hline
     \hline
     \multicolumn{2}{|c|}{\textbf{Funzioni}}\\
     \hline
     \hline
-    indirizzo&\file{/etc/hosts}&\struct{hostent}&\func{gethostbyname}&
-             \func{gethostbyaddr}\\ 
-    servizio &\file{/etc/services}&\struct{servent}&\func{getservbyname}&
-             \func{getservbyaddr}\\ 
-    rete     &\file{/etc/networks}&\struct{netent}&\func{getnetbyname}&
-             \func{getnetbyaddr}\\ 
-    protocollo&\file{/etc/protocols}&\struct{protoent}&\func{getprotobyname}&
-              \func{getprotobyaddr}\\ 
+    indirizzo &\conffile{/etc/hosts}&\struct{hostent}&\func{gethostbyname}&
+               \func{gethostbyaddr}\\ 
+    servizio  &\conffile{/etc/services}&\struct{servent}&\func{getservbyname}&
+               \func{getservbyaddr}\\ 
+    rete      &\conffile{/etc/networks}&\struct{netent}&\func{getnetbyname}&
+               \func{getnetbyaddr}\\ 
+    protocollo&\conffile{/etc/protocols}&\struct{protoent}&
+               \func{getprotobyname}&\func{getprotobyaddr}\\ 
     \hline
   \end{tabular}
   \caption{Funzioni di risoluzione dei nomi per i vari servizi del
     \hline
   \end{tabular}
   \caption{Funzioni di risoluzione dei nomi per i vari servizi del
@@ -1071,12 +1072,12 @@ viceversa; i loro prototipi sono:
 
 Entrambe le funzioni prendono come ultimo argomento una stringa \param{proto}
 che indica il protocollo per il quale si intende effettuare la
 
 Entrambe le funzioni prendono come ultimo argomento una stringa \param{proto}
 che indica il protocollo per il quale si intende effettuare la
-ricerca,\footnote{le informazioni mantenute in \file{/etc/services} infatti
-  sono relative sia alle porte usate su UDP che su TCP, occorre quindi
+ricerca,\footnote{le informazioni mantenute in \conffile{/etc/services}
+  infatti sono relative sia alle porte usate su UDP che su TCP, occorre quindi
   specificare a quale dei due protocolli si fa riferimento.} che nel caso si
 IP può avere come valori possibili solo \texttt{udp} o
 \texttt{tcp};\footnote{in teoria si potrebbe avere un qualunque protocollo fra
   specificare a quale dei due protocolli si fa riferimento.} che nel caso si
 IP può avere come valori possibili solo \texttt{udp} o
 \texttt{tcp};\footnote{in teoria si potrebbe avere un qualunque protocollo fra
-  quelli citati in \file{/etc/protocols}, posto che lo stesso supporti il
+  quelli citati in \conffile{/etc/protocols}, posto che lo stesso supporti il
   concetto di \textsl{porta}, in pratica questi due sono gli unici presenti.}
 se si specifica un puntatore nullo la ricerca sarà eseguita su un protocollo
 qualsiasi.
   concetto di \textsl{porta}, in pratica questi due sono gli unici presenti.}
 se si specifica un puntatore nullo la ricerca sarà eseguita su un protocollo
 qualsiasi.
@@ -1084,14 +1085,14 @@ qualsiasi.
 Il primo argomento è il nome del servizio per \func{getservbyname},
 specificato tramite la stringa \param{name}, mentre \func{getservbyport}
 richiede il numero di porta in \param{port}. Entrambe le funzioni eseguono una
 Il primo argomento è il nome del servizio per \func{getservbyname},
 specificato tramite la stringa \param{name}, mentre \func{getservbyport}
 richiede il numero di porta in \param{port}. Entrambe le funzioni eseguono una
-ricerca sul file \file{/etc/services}\footnote{il \textit{Name Service Switch}
-  astrae il concetto a qualunque supporto su cui si possano mantenere i
-  suddetti dati. } ed estraggono i dati dalla prima riga che corrisponde agli
-argomenti specificati; se la risoluzione ha successo viene restituito un
-puntatore ad una apposita struttura \struct{servent} contenente tutti i
-risultati), altrimenti viene restituito un puntatore nullo.  Si tenga presente
-che anche in questo caso i dati vengono mantenuti in una area di memoria
-statica e che quindi la funzione non è rientrante.
+ricerca sul file \conffile{/etc/services}\footnote{il \textit{Name Service
+    Switch} astrae il concetto a qualunque supporto su cui si possano
+  mantenere i suddetti dati. } ed estraggono i dati dalla prima riga che
+corrisponde agli argomenti specificati; se la risoluzione ha successo viene
+restituito un puntatore ad una apposita struttura \struct{servent} contenente
+tutti i risultati), altrimenti viene restituito un puntatore nullo.  Si tenga
+presente che anche in questo caso i dati vengono mantenuti in una area di
+memoria statica e che quindi la funzione non è rientrante.
 
 \begin{figure}[!htb]
   \footnotesize \centering
 
 \begin{figure}[!htb]
   \footnotesize \centering
@@ -1128,13 +1129,13 @@ prototipi sono:
 \begin{functions}
   \headdecl{netdb.h} 
   \funcdecl{void setservent(int stayopen)} 
 \begin{functions}
   \headdecl{netdb.h} 
   \funcdecl{void setservent(int stayopen)} 
-  Apre il file \file{/etc/services} e si posiziona al suo inizio.
+  Apre il file \conffile{/etc/services} e si posiziona al suo inizio.
 
   \funcdecl{struct servent *getservent(void)}
 
   \funcdecl{struct servent *getservent(void)}
-  Legge la voce successiva nel file \file{/etc/services}.      
+  Legge la voce successiva nel file \conffile{/etc/services}.      
 
   \funcdecl{void endservent(void)} 
 
   \funcdecl{void endservent(void)} 
-  Chiude il file \file{/etc/services}.
+  Chiude il file \conffile{/etc/services}.
 
   \bodydesc{Le due funzioni \func{setservent} e \func{endservent} non
     restituiscono nulla, \func{getservent} restituisce il puntatore ad una
 
   \bodydesc{Le due funzioni \func{setservent} e \func{endservent} non
     restituiscono nulla, \func{getservent} restituisce il puntatore ad una
@@ -1143,11 +1144,11 @@ prototipi sono:
 \end{functions}
 
 La prima funzione, \func{getservent}, legge una singola voce a partire dalla
 \end{functions}
 
 La prima funzione, \func{getservent}, legge una singola voce a partire dalla
-posizione corrente in \file{/etc/services}, pertanto si può eseguire una
+posizione corrente in \conffile{/etc/services}, pertanto si può eseguire una
 lettura sequenziale dello stesso invocandola più volte. Se il file non è
 aperto provvede automaticamente ad aprirlo, nel qual caso leggerà la prima
 voce. La seconda funzione, \func{setservent}, permette di aprire il file
 lettura sequenziale dello stesso invocandola più volte. Se il file non è
 aperto provvede automaticamente ad aprirlo, nel qual caso leggerà la prima
 voce. La seconda funzione, \func{setservent}, permette di aprire il file
-\file{/etc/services} per una successiva lettura, ma se il file è già stato
+\conffile{/etc/services} per una successiva lettura, ma se il file è già stato
 aperto riporta la posizione di lettura alla prima voce del file, in questo
 modo si può far ricominciare da capo una lettura sequenziale. L'argomento
 \param{stayopen}, se diverso da zero, fa sì che il file resti aperto anche fra
 aperto riporta la posizione di lettura alla prima voce del file, in questo
 modo si può far ricominciare da capo una lettura sequenziale. L'argomento
 \param{stayopen}, se diverso da zero, fa sì che il file resti aperto anche fra
@@ -1317,7 +1318,7 @@ valore nullo.
 Il campo \var{ai\_protocol} permette invece di effettuare la selezione dei
 risultati per il nome del servizio usando il numero identificativo del
 rispettivo protocollo di trasporto (i cui valori possibili sono riportati in
 Il campo \var{ai\_protocol} permette invece di effettuare la selezione dei
 risultati per il nome del servizio usando il numero identificativo del
 rispettivo protocollo di trasporto (i cui valori possibili sono riportati in
-\file{/etc/protocols}); di nuovo i due soli valori utilizzabili sono quelli
+\conffile{/etc/protocols}); di nuovo i due soli valori utilizzabili sono quelli
 relativi a UDP e TCP, o il valore nullo che indica di ignorare questo campo
 nella selezione.
 
 relativi a UDP e TCP, o il valore nullo che indica di ignorare questo campo
 nella selezione.
 
@@ -1694,7 +1695,7 @@ l'uso dei socket.
 La funzione prende quattro argomenti, i primi due sono le stringhe che
 indicano il nome della macchina a cui collegarsi ed il relativo servizio su
 cui sarà effettuata la risoluzione; seguono il protocollo da usare (da
 La funzione prende quattro argomenti, i primi due sono le stringhe che
 indicano il nome della macchina a cui collegarsi ed il relativo servizio su
 cui sarà effettuata la risoluzione; seguono il protocollo da usare (da
-specificare con il valore numerico di \file{/etc/protocols}) ed il tipo di
+specificare con il valore numerico di \conffile{/etc/protocols}) ed il tipo di
 socket (al solito specificato con i valori illustrati in
 sez.~\ref{sec:sock_type}).  La funzione ritorna il valore del file descriptor
 associato al socket (un numero positivo) in caso di successo, o -1 in caso di
 socket (al solito specificato con i valori illustrati in
 sez.~\ref{sec:sock_type}).  La funzione ritorna il valore del file descriptor
 associato al socket (un numero positivo) in caso di successo, o -1 in caso di
@@ -1897,7 +1898,7 @@ qualunque tipo di socket.
 
 I valori usati per \param{level}, corrispondenti ad un dato protocollo usato
 da un socket, sono quelli corrispondenti al valore numerico che identifica il
 
 I valori usati per \param{level}, corrispondenti ad un dato protocollo usato
 da un socket, sono quelli corrispondenti al valore numerico che identifica il
-suddetto protocollo in \file{/etc/protocols}; dato che la leggibilità di un
+suddetto protocollo in \conffile{/etc/protocols}; dato che la leggibilità di un
 programma non trarrebbe certo beneficio dall'uso diretto dei valori numerici,
 più comunemente si indica il protocollo tramite le apposite costanti
 \texttt{SOL\_*} riportate in tab.~\ref{tab:sock_option_levels}, dove si sono
 programma non trarrebbe certo beneficio dall'uso diretto dei valori numerici,
 più comunemente si indica il protocollo tramite le apposite costanti
 \texttt{SOL\_*} riportate in tab.~\ref{tab:sock_option_levels}, dove si sono
@@ -1906,7 +1907,7 @@ riassunti i valori che possono essere usati per l'argomento
   confusa: infatti in Linux il valore si può impostare sia usando le costanti
   \texttt{SOL\_*}, che le analoghe \texttt{IPPROTO\_*} (citate anche da
   Stevens in \cite{UNP1}); entrambe hanno gli stessi valori che sono
   confusa: infatti in Linux il valore si può impostare sia usando le costanti
   \texttt{SOL\_*}, che le analoghe \texttt{IPPROTO\_*} (citate anche da
   Stevens in \cite{UNP1}); entrambe hanno gli stessi valori che sono
-  equivalenti ai numeri di protocollo di \file{/etc/protocols}, con una
+  equivalenti ai numeri di protocollo di \conffile{/etc/protocols}, con una
   eccezione specifica, che è quella del protocollo ICMP, per la quale non
   esista una costante, il che è comprensibile dato che il suo valore, 1, è
   quello che viene assegnato a \const{SOL\_SOCKET}.}
   eccezione specifica, che è quella del protocollo ICMP, per la quale non
   esista una costante, il che è comprensibile dato che il suo valore, 1, è
   quello che viene assegnato a \const{SOL\_SOCKET}.}
index 9ca37675a72227cd8dde9459ad0b8e393f17c2f1..81425465be387989b4ca298ce5db2a2fd0847d20 100644 (file)
@@ -658,11 +658,14 @@ in \file{linux/sysctl.h},\footnote{indicando un file di definizioni si fa
 disponibile in \file{/proc/sys} è riportata inoltre nella documentazione
 inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}.
 
 disponibile in \file{/proc/sys} è riportata inoltre nella documentazione
 inclusa nei sorgenti del kernel, nella directory \file{Documentation/sysctl}.
 
-Ma oltre alle informazioni ottenibili da \func{sysctl} dentro \file{proc} 
-sono disponibili moltissime altre informazioni, fra cui ad esempio anche
-quelle fornite da \func{uname} (vedi sez.~\ref{sec:sys_config}) che sono
-mantenute nei file \file{ostype}, \file{hostname}, \file{osrelease},
-\file{version} e \file{domainname} di \file{/proc/kernel/}.
+Ma oltre alle informazioni ottenibili da \func{sysctl} dentro \file{proc} sono
+disponibili moltissime altre informazioni, fra cui ad esempio anche quelle
+fornite da \func{uname} (vedi sez.~\ref{sec:sys_config}) che sono mantenute
+nei file \procrelfile{/proc/sys/kernel}{ostype},
+\procrelfile{/proc/sys/kernel}{hostname},
+\procrelfile{/proc/sys/kernel}{osrelease},
+\procrelfile{/proc/sys/kernel}{version} e
+\procrelfile{/proc/sys/kernel}{domainname} di \file{/proc/sys/kernel/}.
 
 
 
 
 
 
@@ -906,8 +909,8 @@ file \conffile{/etc/fstab} ed \conffile{/etc/mtab}, che convenzionalmente sono
 usati in quasi tutti i sistemi unix-like per mantenere rispettivamente le
 informazioni riguardo ai filesystem da montare e a quelli correntemente
 montati. Le funzioni servono a leggere il contenuto di questi file in
 usati in quasi tutti i sistemi unix-like per mantenere rispettivamente le
 informazioni riguardo ai filesystem da montare e a quelli correntemente
 montati. Le funzioni servono a leggere il contenuto di questi file in
-opportune strutture \struct{fstab} e \struct{mntent}, e, per \file{/etc/mtab}
-per inserire e rimuovere le voci presenti nel file.
+opportune strutture \struct{fstab} e \struct{mntent}, e, per
+\conffile{/etc/mtab} per inserire e rimuovere le voci presenti nel file.
 
 In generale si dovrebbero usare queste funzioni (in particolare quelle
 relative a \conffile{/etc/mtab}), quando si debba scrivere un programma che
 
 In generale si dovrebbero usare queste funzioni (in particolare quelle
 relative a \conffile{/etc/mtab}), quando si debba scrivere un programma che