X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=ipc.tex;h=6ae11a30a8e157e0f0d181583034dcb47f7489c9;hp=37d55d5b96358c9ef8bd420ddb1d3871f1b4c824;hb=6c8d59152cff88b5835eeb749445148bb3546a5b;hpb=7463fc5258c5afb139286c2509f5161bc0d76290 diff --git a/ipc.tex b/ipc.tex index 37d55d5..6ae11a3 100644 --- a/ipc.tex +++ b/ipc.tex @@ -629,7 +629,38 @@ int main(int argc, char *argv[]) \label{fig:ipc_fifo_server} \end{figure} - +Il server richiede (\texttt{\small 11}) che sia stata impostata una dimensione +dell'insieme delle frasi non nulla, stampando, nel caso ciò non avvenga, un +messaggio apposito ed uscendo. Poi (\texttt{\small 12}) effettua la chiamata +alla funzione \code{FortuneParse} che legge dal file specificato in +\var{fortunefilename} le prime \var{n} frasi e le memorizza nel vettore di +puntatori \var{fortune}. Il codice della funzione non è riportato, in quanto +non direttamente attinente allo scopo dell'esempio, lo si può trovare nel file +\file{FortuneParse.c} allegato coi sorgenti degli esempi. + +Il passo successivo \texttt{\small 16--21}) è quello di creare, se non esiste +già, la fifo nota sulla quale il server ascolterà le richieste, qualora si +riscontri un errore il server uscirà (escludendo ovviamente il caso in cui la +funzione \func{mkfifo} fallisce per la precedente esistenza della fifo. + +Fatto questo si entra nel ciclo principale del programma \texttt{\small + 22--36}), che viene eseguito indefinitamente (l'uscita del server deve +essere effettuata tramite segnale), e che provvede a fornire le risposte ai +client. Il server è progettato per accettare le richieste dai client che +devono scrivere il nome della fifo sulla quale vogliono ricevere la risposta +sulla fifo su cui il server è in ascolto. + +Il primo passo è aprire in lettura la fifo (\texttt{\small 23}), se nessun +client ha effettuato una richiesta la fifo non ha capi aperti in scrittura, e +pertanto il server si bloccherà. Una volta che un client ha aperto la fifo in +scrittura il server si sbloccherà ed effetturà la lettura (\texttt{\small 28}) +della richiesta del client (nel caso limitata a 79 byte). + +Dopo di che verrà calcolato (\texttt{\small 30}) un numero casuale nel range +delle frasi disponibili nella nostra lista, e verrà aperta (\texttt{\small + 31}) la fifo sulla quale il client vuole ricevere la risposta, che sarà poi +scritta (\texttt{\small 32}). Dopo di che \texttt{\small 34--35}) entrambe le +fifo verranno chiuse. Benché il nostro sistema client-server funzioni, la sua struttura è piuttosto