X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=simpltcp.tex;h=4da8e81d70e17c58fea92b2fc1415d02df77ab49;hp=f210f219e3114717d0138eab1bea059b441f98ad;hb=2f9a4c398ce7f9c40b6f07a3d643098b6ed4ff27;hpb=e397070555910d790f746fa9d5ad995ba8537cba diff --git a/simpltcp.tex b/simpltcp.tex index f210f21..4da8e81 100644 --- a/simpltcp.tex +++ b/simpltcp.tex @@ -29,11 +29,11 @@ caratteri dallo standard input e la scrive sul server, il server legger linea dalla connessione e la riscriverà all'indietro; sarà compito del client leggere la risposta del server e stamparla sullo standard output. -Si è scelto di usare questo servizio, seguendo lo Stevens, perché costituisce -il prototipo ideale di una generica applicazione di rete in cui un server -risponde alle richieste di un client; tutto quello che cambia nel caso si una -applicazione più complessa è la elaborazione dell'input del client da parte -del server nel fornire le risposte in uscita. +Si è scelto di usare questo servizio, seguendo l'esempio di \cite{UNP1}, +perché costituisce il prototipo ideale di una generica applicazione di rete in +cui un server risponde alle richieste di un client; tutto quello che cambia +nel caso si una applicazione più complessa è la elaborazione dell'input del +client da parte del server nel fornire le risposte in uscita. Partiremo da un'implementazione elementare che dovrà essere rimaneggiata di volta in volta per poter tenere conto di tutte le evenienze che si possono @@ -329,11 +329,11 @@ un risultato del tipo: tre processi, tutti in stato di \textit{sleep} (S). Se a questo punto si inizia a scrivere qualcosa sul client niente sarà -trasmesso fin tanto che non si prema il ritorno carrello, allora la -\func{fgets} ritornerà e a questo punto il client scriverà quanto immesso -sul socket, poi rileggerà quanto gli viene inviato all'indietro dal server, e -questo sarà inviato sullo standard output, che nel caso ne provoca -l'immediatamente stampa a video. +trasmesso fin tanto che non si prema il ritorno carrello (si ricordi quanto +trattato in \secref{sec:file_line_io}), allora la \func{fgets} ritornerà e a +questo punto il client scriverà quanto immesso sul socket, poi rileggerà +quanto gli viene inviato all'indietro dal server, e questo sarà inviato sullo +standard output, che nel caso ne provoca l'immediatamente stampa a video. \subsection{La conclusione normale} @@ -407,9 +407,13 @@ ripetendo il comando \cmd{ps}: Poiché non è possibile lasciare processi zombie che pur inattivi occupano spazio nella tabella dei processi e a lungo andare saturerebbero le risorse del kernel, occorrerà ricevere opportunamente lo stato di terminazione del -processo (si veda \secref{sec:proc_wait}), cosa che faremo utilizzando il -segnale, per questo installeremo un manipolatore usando la funzione -\func{Signal} (trattata in dettaglio in \secref{sec:sig_signal}). +processo (si veda \secref{sec:proc_wait}), cosa che faremo utilizzando +\macro{SIGCHLD} secondo quanto illustrato in \secref{sec:sig_sigchld}. + +La prima modifica al nostro server è pertanto quella di inserire la gestione +della terminazione dei processi figli attraverso l'uso di un manipolatore. +Per questo usiamo la funzione \code{Signal} illustrata in +\figref{fig:sig_Signal_code}. %%% Local Variables: