Reindicizzazione sensata di socket e out-of-band.
[gapil.git] / filedir.tex
index 9a9ed69a747ce1039ea27972d0c31aeff7b121af..ce6f6c026af79c4dc806b80c9533c4a4f75ec23c 100644 (file)
@@ -1,6 +1,6 @@
 %% filedir.tex
 %%
 %% filedir.tex
 %%
-%% Copyright (C) 2000-2005 Simone Piccardi.  Permission is granted to
+%% Copyright (C) 2000-2006 Simone Piccardi.  Permission is granted to
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
 %% copy, distribute and/or modify this document under the terms of the GNU Free
 %% Documentation License, Version 1.1 or any later version published by the
 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
@@ -155,10 +155,9 @@ suo prototipo 
 La funzione cancella il nome specificato da \param{pathname} nella relativa
 directory e decrementa il numero di riferimenti nel relativo
 inode\index{inode}. Nel caso di link simbolico cancella il link simbolico; nel
 La funzione cancella il nome specificato da \param{pathname} nella relativa
 directory e decrementa il numero di riferimenti nel relativo
 inode\index{inode}. Nel caso di link simbolico cancella il link simbolico; nel
-caso di socket\index{socket}, fifo o file di
-dispositivo\index{file!di~dispositivo} rimuove il nome, ma come per i file i
-processi che hanno aperto uno di questi oggetti possono continuare ad
-utilizzarlo.
+caso di socket, fifo o file di dispositivo\index{file!di~dispositivo} rimuove
+il nome, ma come per i file i processi che hanno aperto uno di questi oggetti
+possono continuare ad utilizzarlo.
 
 Per cancellare una voce in una directory è necessario avere il permesso di
 scrittura su di essa, dato che si va a rimuovere una voce dal suo contenuto, e
 
 Per cancellare una voce in una directory è necessario avere il permesso di
 scrittura su di essa, dato che si va a rimuovere una voce dal suo contenuto, e
@@ -576,8 +575,8 @@ consentir
 Finora abbiamo parlato esclusivamente di file, directory e link simbolici; in
 sez.~\ref{sec:file_file_types} abbiamo visto però che il sistema prevede pure
 degli altri tipi di file speciali, come i file di dispositivo
 Finora abbiamo parlato esclusivamente di file, directory e link simbolici; in
 sez.~\ref{sec:file_file_types} abbiamo visto però che il sistema prevede pure
 degli altri tipi di file speciali, come i file di dispositivo
-\index{file!di~dispositivo} e le fifo (i socket\index{socket} sono un caso a
-parte, che vedremo in cap.~\ref{cha:socket_intro}).
+\index{file!di~dispositivo} e le fifo (i socket sono un caso a parte, che
+tratteremo in cap.~\ref{cha:socket_intro}).
 
 La manipolazione delle caratteristiche di questi file e la loro cancellazione
 può essere effettuata con le stesse funzioni che operano sui file regolari; ma
 
 La manipolazione delle caratteristiche di questi file e la loro cancellazione
 può essere effettuata con le stesse funzioni che operano sui file regolari; ma
@@ -615,11 +614,11 @@ permessi sono comunque modificati nella maniera usuale dal valore di
 \var{umask} (si veda sez.~\ref{sec:file_umask}).
 
 Per il tipo di file può essere specificato solo uno fra: \const{S\_IFREG} per
 \var{umask} (si veda sez.~\ref{sec:file_umask}).
 
 Per il tipo di file può essere specificato solo uno fra: \const{S\_IFREG} per
-un file regolare (che sarà creato vuoto), \const{S\_IFBLK} per un device a
-blocchi, \const{S\_IFCHR} per un device a caratteri e \const{S\_IFIFO} per una
-fifo. Un valore diverso comporterà l'errore \errcode{EINVAL}. Qualora si sia
-specificato in \param{mode} un file di dispositivo, il valore di \param{dev}
-viene usato per indicare a quale dispositivo si fa riferimento.
+un file regolare (che sarà creato vuoto), \const{S\_IFBLK} per un dispositivo
+a blocchi, \const{S\_IFCHR} per un dispositivo a caratteri e \const{S\_IFIFO}
+per una fifo. Un valore diverso comporterà l'errore \errcode{EINVAL}. Qualora
+si sia specificato in \param{mode} un file di dispositivo, il valore di
+\param{dev} viene usato per indicare a quale dispositivo si fa riferimento.
 
 Solo l'amministratore può creare un file di dispositivo o un file regolare
 usando questa funzione; ma in Linux\footnote{la funzione non è prevista dallo
 
 Solo l'amministratore può creare un file di dispositivo o un file regolare
 usando questa funzione; ma in Linux\footnote{la funzione non è prevista dallo
@@ -920,10 +919,10 @@ ritorna un valore diverso da zero la voce viene inserita in un vettore che
 viene allocato dinamicamente con \func{malloc}.  Qualora si specifichi un
 valore \val{NULL} per \func{select} vengono selezionate tutte le voci.
 
 viene allocato dinamicamente con \func{malloc}.  Qualora si specifichi un
 valore \val{NULL} per \func{select} vengono selezionate tutte le voci.
 
-Le voci selezionate possono essere riodinate tramite \func{qsort}, le modalità
+Le voci selezionate possono essere riordinate tramite \func{qsort}, le modalità
 del riordinamento possono essere personalizzate usando la funzione
 \param{compar} come criterio di ordinamento di\func{qsort}, la funzione prende
 del riordinamento possono essere personalizzate usando la funzione
 \param{compar} come criterio di ordinamento di\func{qsort}, la funzione prende
-come argomenti le duestrutture \struct{dirent} da confrontare restituendo un
+come argomenti le due strutture \struct{dirent} da confrontare restituendo un
 valore positivo, nullo o negativo per indicarne l'ordinamento; alla fine
 l'indirizzo della lista delle strutture \struct{dirent} così ordinate viene
 restituito nell'argomento \param{namelist}.
 valore positivo, nullo o negativo per indicarne l'ordinamento; alla fine
 l'indirizzo della lista delle strutture \struct{dirent} così ordinate viene
 restituito nell'argomento \param{namelist}.
@@ -1322,7 +1321,7 @@ della directory 
   condition}\itindex{race~condition} non si pongono.
 
 
   condition}\itindex{race~condition} non si pongono.
 
 
-\section{La manipolazione delle caratteristiche dei files}
+\section{La manipolazione delle caratteristiche dei file}
 \label{sec:file_infos}
 
 Come spiegato in sez.~\ref{sec:file_filesystem} tutte le informazioni generali
 \label{sec:file_infos}
 
 Come spiegato in sez.~\ref{sec:file_filesystem} tutte le informazioni generali
@@ -1343,7 +1342,7 @@ sez.~\ref{sec:file_access_control}).
 La lettura delle informazioni relative ai file è fatta attraverso la famiglia
 delle funzioni \func{stat} (\funcd{stat}, \funcd{fstat} e \funcd{lstat});
 questa è la funzione che ad esempio usa il comando \cmd{ls} per poter ottenere
 La lettura delle informazioni relative ai file è fatta attraverso la famiglia
 delle funzioni \func{stat} (\funcd{stat}, \funcd{fstat} e \funcd{lstat});
 questa è la funzione che ad esempio usa il comando \cmd{ls} per poter ottenere
-e mostrare tutti i dati dei files. I prototipi di queste funzioni sono i
+e mostrare tutti i dati dei file. I prototipi di queste funzioni sono i
 seguenti:
 \begin{functions}
   \headdecl{sys/types.h} 
 seguenti:
 \begin{functions}
   \headdecl{sys/types.h} 
@@ -1356,7 +1355,7 @@ seguenti:
   
   \funcdecl{int lstat(const char *file\_name, struct stat *buf)} Identica a
   \func{stat} eccetto che se il \param{file\_name} è un link simbolico vengono
   
   \funcdecl{int lstat(const char *file\_name, struct stat *buf)} Identica a
   \func{stat} eccetto che se il \param{file\_name} è un link simbolico vengono
-  lette le informazioni relativae ad esso e non al file a cui fa riferimento.
+  lette le informazioni relative ad esso e non al file a cui fa riferimento.
   
   \funcdecl{int fstat(int filedes, struct stat *buf)} Identica a \func{stat}
   eccetto che si usa con un file aperto, specificato tramite il suo file
   
   \funcdecl{int fstat(int filedes, struct stat *buf)} Identica a \func{stat}
   eccetto che si usa con un file aperto, specificato tramite il suo file
@@ -1405,9 +1404,9 @@ di file 
 Dato che il valore numerico può variare a seconda delle implementazioni, lo
 standard POSIX definisce un insieme di macro per verificare il tipo di file,
 queste vengono usate anche da Linux che supporta pure le estensioni allo
 Dato che il valore numerico può variare a seconda delle implementazioni, lo
 standard POSIX definisce un insieme di macro per verificare il tipo di file,
 queste vengono usate anche da Linux che supporta pure le estensioni allo
-standard per i link simbolici e i socket\index{socket} definite da BSD;
-l'elenco completo delle macro con cui è possibile estrarre l'informazione da
-\var{st\_mode} è riportato in tab.~\ref{tab:file_type_macro}.
+standard per i link simbolici e i socket definite da BSD; l'elenco completo
+delle macro con cui è possibile estrarre l'informazione da \var{st\_mode} è
+riportato in tab.~\ref{tab:file_type_macro}.
 \begin{table}[htb]
   \centering
   \footnotesize
 \begin{table}[htb]
   \centering
   \footnotesize
@@ -1422,7 +1421,7 @@ l'elenco completo delle macro con cui 
     \macro{S\_ISBLK(m)}  & dispositivo a blocchi\\
     \macro{S\_ISFIFO(m)} & fifo \\
     \macro{S\_ISLNK(m)}  & link simbolico \\
     \macro{S\_ISBLK(m)}  & dispositivo a blocchi\\
     \macro{S\_ISFIFO(m)} & fifo \\
     \macro{S\_ISLNK(m)}  & link simbolico \\
-    \macro{S\_ISSOCK(m)} & socket\index{socket} \\
+    \macro{S\_ISSOCK(m)} & socket \\
     \hline    
   \end{tabular}
   \caption{Macro per i tipi di file (definite in \texttt{sys/stat.h}).}
     \hline    
   \end{tabular}
   \caption{Macro per i tipi di file (definite in \texttt{sys/stat.h}).}
@@ -1450,7 +1449,7 @@ un'opportuna combinazione.
     \hline
     \hline
     \const{S\_IFMT}   &  0170000 & maschera per i bit del tipo di file \\
     \hline
     \hline
     \const{S\_IFMT}   &  0170000 & maschera per i bit del tipo di file \\
-    \const{S\_IFSOCK} &  0140000 & socket\index{socket}             \\
+    \const{S\_IFSOCK} &  0140000 & socket             \\
     \const{S\_IFLNK}  &  0120000 & link simbolico     \\
     \const{S\_IFREG}  &  0100000 & file regolare      \\ 
     \const{S\_IFBLK}  &  0060000 & dispositivo a blocchi   \\
     \const{S\_IFLNK}  &  0120000 & link simbolico     \\
     \const{S\_IFREG}  &  0100000 & file regolare      \\ 
     \const{S\_IFBLK}  &  0060000 & dispositivo a blocchi   \\
@@ -1541,8 +1540,8 @@ dimensione si possono usare le due funzioni \funcd{truncate} e
     \func{ftruncate} si hanno i valori:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{fd}  non è un file descriptor.
     \func{ftruncate} si hanno i valori:
   \begin{errlist}
   \item[\errcode{EBADF}] \param{fd}  non è un file descriptor.
-  \item[\errcode{EINVAL}] \param{fd} è un riferimento ad un
-    socket\index{socket}, non a un file o non è aperto in scrittura.
+  \item[\errcode{EINVAL}] \param{fd} è un riferimento ad un socket, non a un
+    file o non è aperto in scrittura.
   \end{errlist}
   per \func{truncate} si hanno:
   \begin{errlist}
   \end{errlist}
   per \func{truncate} si hanno:
   \begin{errlist}
@@ -2039,8 +2038,9 @@ proposito).
 Infine Linux utilizza il bit \acr{sgid} per una ulteriore estensione mutuata
 da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostato senza che lo
 sia anche il corrispondente bit di esecuzione viene utilizzato per attivare
 Infine Linux utilizza il bit \acr{sgid} per una ulteriore estensione mutuata
 da SVr4. Il caso in cui un file ha il bit \acr{sgid} impostato senza che lo
 sia anche il corrispondente bit di esecuzione viene utilizzato per attivare
-per quel file il \textit{mandatory locking} (affronteremo questo argomento in
-dettaglio più avanti, in sez.~\ref{sec:file_mand_locking}).
+per quel file il \itindex{mandatory~locking} \textit{mandatory locking}
+(affronteremo questo argomento in dettaglio più avanti, in
+sez.~\ref{sec:file_mand_locking}).
 
 \itindend{suid~bit}
 \itindend{sgid~bit}
 
 \itindend{suid~bit}
 \itindend{sgid~bit}
@@ -2052,7 +2052,7 @@ dettaglio pi
 
 L'ultimo dei bit rimanenti, identificato dalla costante \const{S\_ISVTX}, è in
 parte un rimasuglio delle origini dei sistemi Unix. A quell'epoca infatti la
 
 L'ultimo dei bit rimanenti, identificato dalla costante \const{S\_ISVTX}, è in
 parte un rimasuglio delle origini dei sistemi Unix. A quell'epoca infatti la
-memoria virtuale e l'accesso ai files erano molto meno sofisticati e per
+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.
 
 ottenere la massima velocità possibile per i programmi usati più comunemente
 si poteva impostare questo bit.
 
@@ -2421,7 +2421,7 @@ privilegi di root entrambi i bit \itindex{suid~bit} \acr{suid} e
 \itindex{sgid~bit} \acr{sgid} vengono cancellati. Questo non avviene per il
 bit \acr{sgid} nel caso in cui esso sia usato (in assenza del corrispondente
 permesso di esecuzione) per indicare che per il file è attivo il
 \itindex{sgid~bit} \acr{sgid} vengono cancellati. Questo non avviene per il
 bit \acr{sgid} nel caso in cui esso sia usato (in assenza del corrispondente
 permesso di esecuzione) per indicare che per il file è attivo il
-\textit{mandatory locking}.
+\itindex{mandatory~locking} \textit{mandatory locking}.
 
 
 \subsection{Un quadro d'insieme sui permessi}
 
 
 \subsection{Un quadro d'insieme sui permessi}
@@ -2454,7 +2454,8 @@ ha alcun effetto qualora il processo possieda i privilegi di amministratore.
     \hline
     1&-&-&-&-&-&-&-&-&-&-&-&Se eseguito ha i permessi del proprietario\\
     -&1&-&-&-&1&-&-&-&-&-&-&Se eseguito ha i permessi del gruppo proprietario\\
     \hline
     1&-&-&-&-&-&-&-&-&-&-&-&Se eseguito ha i permessi del proprietario\\
     -&1&-&-&-&1&-&-&-&-&-&-&Se eseguito ha i permessi del gruppo proprietario\\
-    -&1&-&-&-&0&-&-&-&-&-&-&Il \textit{mandatory locking} è abilitato\\
+    -&1&-&-&-&0&-&-&-&-&-&-&Il \itindex{mandatory~locking} 
+                            \textit{mandatory locking} è abilitato\\
     -&-&1&-&-&-&-&-&-&-&-&-&Non utilizzato\\
     -&-&-&1&-&-&-&-&-&-&-&-&Permesso di lettura per il proprietario\\
     -&-&-&-&1&-&-&-&-&-&-&-&Permesso di scrittura per il proprietario\\
     -&-&1&-&-&-&-&-&-&-&-&-&Non utilizzato\\
     -&-&-&1&-&-&-&-&-&-&-&-&Permesso di lettura per il proprietario\\
     -&-&-&-&1&-&-&-&-&-&-&-&Permesso di scrittura per il proprietario\\
@@ -2610,3 +2611,34 @@ programmi e librerie) di cui il server potrebbe avere bisogno.
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
 %%% mode: latex
 %%% TeX-master: "gapil"
 %%% End: 
+
+% LocalWords:  sez like filesystem unlink MacOS Windows VMS inode kernel unistd
+% LocalWords:  un'etichetta int const char oldpath newpath errno EXDEV EPERM st
+% LocalWords:  EEXIST EMLINK EACCES ENAMETOOLONG ENOTDIR EFAULT ENOMEM EROFS ls
+% LocalWords:  ELOOP ENOSPC EIO pathname nlink stat vfat fsck EISDIR ENOENT cap
+% LocalWords:  POSIX socket fifo sticky root nell'inode system call count crash
+% LocalWords:  all'inode descriptor remove rename rmdir stdio glibc libc NFS DT
+% LocalWords:  ENOTEMPTY EBUSY mount point EINVAL soft symbolic tab symlink fig
+% LocalWords:  dangling access chdir chmod chown creat exec lchown lstat mkdir
+% LocalWords:  mkfifo mknod opendir pathconf readlink truncate path buff size
+% LocalWords:  grub bootloader grep linux MAXSYMLINKS cat VFS sys dirname fcntl
+% LocalWords:  dev l'inode umask IFREG IFBLK IFCHR IFIFO SVr sgid BSD SVID NULL
+% LocalWords:  stream dirent EMFILE ENFILE dirfd SOURCE fchdir readdir struct
+% LocalWords:  EBADF namlen HAVE thread entry result value argument fileno ino
+% LocalWords:  name TYPE OFF RECLEN UNKNOWN REG SOCK CHR BLK type IFTODT DTTOIF
+% LocalWords:  DTYPE off reclen seekdir telldir void rewinddir closedir select
+% LocalWords:  namelist compar malloc qsort alphasort versionsort strcoll myls
+% LocalWords:  strcmp DirScan direntry while current working home shell pwd get
+% LocalWords:  dell'inode getcwd ERANGE getwd change fd race condition tmpnam
+% LocalWords:  string tmpdir TMP tempnam pfx TMPNAME suid tmp EXCL tmpfile pid
+% LocalWords:  EINTR mktemp mkstemp stlib template filename XXXXXX OpenBSD buf
+% LocalWords:  mkdtemp fstat filedes nell'header padding ISREG ISDIR ISCHR IFMT
+% LocalWords:  ISBLK ISFIFO ISLNK ISSOCK IFSOCK IFLNK IFDIR ISUID UID ISGID GID
+% LocalWords:  ISVTX IRUSR IWUSR IXUSR IRGRP IWGRP IXGRP IROTH IWOTH IXOTH du
+% LocalWords:  blocks blksize holes lseek TRUNC ftruncate length lenght ETXTBSY
+% LocalWords:  hole atime read utime mtime write ctime modification leafnode cp
+% LocalWords:  make fchmod fchown utimbuf times actime modtime Mac owner uid fs
+% LocalWords:  gid Control List patch mandatory control execute group other all
+% LocalWords:  dell' effective passwd IGID locking swap saved text IRWXU IRWXG
+% LocalWords:  IRWXO ext reiser capability FSETID mask capabilities chroot jail
+% LocalWords:  FTP