X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=fileadv.tex;h=9737bb0d33c973f73dfa93f3acf5b40eb22753b1;hp=9c06b50d8b0edab32edd4dd4d5c61fd50cf7ad04;hb=99fa5a06cd27160cf673e3483ad552d32efa2c05;hpb=7208522fd60468969d96dba5d8dd2cbd24b75b89 diff --git a/fileadv.tex b/fileadv.tex index 9c06b50..9737bb0 100644 --- a/fileadv.tex +++ b/fileadv.tex @@ -1182,7 +1182,7 @@ Lo standard POSIX è rimasto a lungo senza primitive per l'\textit{I/O multiplexing}, introdotto solo con le ultime revisioni dello standard (POSIX 1003.1g-2000 e POSIX 1003.1-2001). La scelta è stata quella di seguire l'interfaccia creata da BSD, ma prevede che tutte le funzioni ad esso relative -vengano dichiarate nell'header \headfile{sys/select.h}, che sostituisce i +vengano dichiarate nell'header \headfiled{sys/select.h}, che sostituisce i precedenti, ed inoltre aggiunge a \func{select} una nuova funzione \funcd{pselect},\footnote{il supporto per lo standard POSIX 1003.1-2001, ed l'header \headfile{sys/select.h}, compaiono in Linux a partire dalle @@ -1836,7 +1836,7 @@ modificano le modalità di notifica. ed è utile per riconoscere la chiusura di una connessione dall'altro capo di un socket quando si lavora in modalità \textit{edge triggered}.} -Il secondo campo, \var{data}, è una \direct{union} che serve a identificare il +Il secondo campo, \var{data}, è una \dirct{union} che serve a identificare il file descriptor a cui si intende fare riferimento, ed in astratto può contenere un valore qualsiasi (specificabile in diverse forme) che ne permetta una indicazione univoca. Il modo più comune di usarlo però è quello in cui si @@ -3336,15 +3336,15 @@ così all'applicazione di collegare la corrispondente coppia di eventi Infine due campi \var{name} e \var{len} sono utilizzati soltanto quando l'evento è relativo ad un file presente in una directory posta sotto osservazione, in tal caso essi contengono rispettivamente il nome del file -(come \itindsub{pathname}{relativo} \textit{pathname} relativo alla directory -osservata) e la relativa dimensione in byte. Il campo \var{name} viene sempre -restituito come stringa terminata da NUL, con uno o più zeri di terminazione, -a seconda di eventuali necessità di allineamento del risultato, ed il valore -di \var{len} corrisponde al totale della dimensione di \var{name}, zeri -aggiuntivi compresi. La stringa con il nome del file viene restituita nella -lettura subito dopo la struttura \struct{inotify\_event}; questo significa che -le dimensioni di ciascun evento di \textit{inotify} saranno pari a -\code{sizeof(\struct{inotify\_event}) + len}. +(come \textit{pathname} relativo alla directory osservata) e la relativa +dimensione in byte. Il campo \var{name} viene sempre restituito come stringa +terminata da NUL, con uno o più zeri di terminazione, a seconda di eventuali +necessità di allineamento del risultato, ed il valore di \var{len} corrisponde +al totale della dimensione di \var{name}, zeri aggiuntivi compresi. La stringa +con il nome del file viene restituita nella lettura subito dopo la struttura +\struct{inotify\_event}; questo significa che le dimensioni di ciascun evento +di \textit{inotify} saranno pari a \code{sizeof(\struct{inotify\_event}) + + len}. Vediamo allora un esempio dell'uso dell'interfaccia di \textit{inotify} con un semplice programma che permette di mettere sotto osservazione uno o più file e @@ -3517,7 +3517,7 @@ Lo standard POSIX prevede che tutte le operazioni di I/O asincrono siano controllate attraverso l'uso di una apposita struttura \struct{aiocb} (il cui nome sta per \textit{asyncronous I/O control block}), che viene passata come argomento a tutte le funzioni dell'interfaccia. La sua definizione, come -effettuata in \headfile{aio.h}, è riportata in +effettuata in \headfiled{aio.h}, è riportata in fig.~\ref{fig:file_aiocb}. Nello steso file è definita la macro \macro{\_POSIX\_ASYNCHRONOUS\_IO}, che dichiara la disponibilità dell'interfaccia per l'I/O asincrono.