X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=intro.tex;h=443cd33512b52f40779efedc846701c5808ed835;hb=897cce4642115b8d50f173b51c45c1f32851c77b;hp=7378e59805390b7bad00ca6b1a82598e822d16e3;hpb=5ac64ab2753cbd2198e9b5b17119134b5ef63bc6;p=gapil.git diff --git a/intro.tex b/intro.tex index 7378e59..443cd33 100644 --- a/intro.tex +++ b/intro.tex @@ -400,9 +400,10 @@ programmi delle opportune \textit{system call} che consentano di leggere e scrivere il contenuto. Tutto ciò ha due aspetti: il primo è che il kernel, per il concetto dell'\textit{everything is a file}, deve fornire una interfaccia che consenta di operare sui file, sia che questi corrispondano ai normali file -di dati, sia che siano quei file speciali (i cosiddetti -\index{file!di~dispositivo} file di dispositivo, o \textit{device file}) che -permettono di accedere alle periferiche. +di dati, o ai cosiddetti \index{file!speciali} ``\textsl{file speciali}'', +come \index{file!di~dispositivo} i file di dispositivo (o \textit{device + file}) che permettono di accedere alle periferiche o le fifo ed i socket che +forniscono funzionalità di comunicazione fra processi. Il secondo aspetto è che per poter utilizzare dei normali file di dati il kernel deve provvedere ad organizzare e rendere accessibile in maniera @@ -737,7 +738,7 @@ dispositivi. L'accesso viene gestito attraverso i \textit{file descriptor} che sono rappresentati da numeri interi (cioè semplici variabili di tipo \ctyp{int}). L'interfaccia è definita nell'\textit{header file} \headfile{unistd.h} e la tratteremo in dettaglio in -cap.~\ref{cha:file_unix_interface}. +sez.~\ref{sec:file_unix_interface}. \itindbeg{file~stream} @@ -755,15 +756,15 @@ Unix. Gli \textit{stream} sono oggetti complessi e sono rappresentati da puntatori ad un opportuna struttura definita dalle librerie del C, ad essi si accede sempre in maniera indiretta utilizzando il tipo \code{FILE *}. L'interfaccia è definita nell'\textit{header file} \headfile{stdio.h} e la -tratteremo in dettaglio nel cap.~\ref{cha:files_std_interface}. +tratteremo in dettaglio in sez.~\ref{sec:files_std_interface}. Entrambe le interfacce possono essere usate per l'accesso ai file come agli altri oggetti del VFS, ma per poter accedere alle operazioni di controllo -(descritte in sez.~\ref{sec:file_fcntl} e sez.~\ref{sec:file_ioctl}) su un -qualunque tipo di oggetto del VFS occorre usare l'interfaccia standard di Unix -con i file descriptor. Allo stesso modo devono essere usati i file descriptor -se si vuole ricorrere a modalità speciali di I/O come il -\itindex{file~locking} \textit{file locking} o l'I/O non-bloccante (vedi +(descritte in sez.~\ref{sec:file_fcntl_ioctl}) su un qualunque tipo di oggetto +del VFS occorre usare l'interfaccia standard di Unix con i file +descriptor. Allo stesso modo devono essere usati i file descriptor se si vuole +ricorrere a modalità speciali di I/O come il \itindex{file~locking} +\textit{file locking} o l'I/O non-bloccante (vedi cap.~\ref{cha:file_advanced}). Gli \textit{stream} forniscono un'interfaccia di alto livello costruita sopra @@ -1361,7 +1362,7 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco: presente negli standard con i file di grandi dimensioni, ed in particolare definire le due funzioni \func{fseeko} e \func{ftello} che al contrario delle corrispettive \func{fseek} e \func{ftell} usano il tipo di dato - specifico \type{off\_t} (vedi sez.~\ref{sec:file_fseek}). + specifico \type{off\_t} (vedi sez.~\ref{sec:file_io}). \item[\macro{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono disponibili le funzioni di una interfaccia alternativa al supporto di valori