X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=simpltcp.tex;h=5b984ae276d1d813c5b665431ee3e53fe47ef509;hp=38df63e18b241f3dc0f99d3cabba23a58346f41f;hb=09473ed326013ece27d53cd5ff9f96064cbce9f3;hpb=056bbc90c8a0710b57fa7b13f5f0dfdad1b3ff3f diff --git a/simpltcp.tex b/simpltcp.tex index 38df63e..5b984ae 100644 --- a/simpltcp.tex +++ b/simpltcp.tex @@ -309,7 +309,7 @@ mentre per quanto riguarda l'esecuzione dei programmi avremo che: \begin{itemize} \item il client chiama la funzione \texttt{ClientEcho} che si blocca sulla \texttt{fgets} dato che non si è ancora scritto nulla sul terminale. -\item il server eseguirà una \texttt{fork} facendo chiamare al processo figlo +\item il server eseguirà una \texttt{fork} facendo chiamare al processo figlio la funzione \texttt{ServEcho}, quest'ultima si bloccherà sulla \texttt{read} dal socket sul quale ancora non sono presenti dati. \item il processo padre del server chiamerà di nuovo \texttt{accept} @@ -364,10 +364,10 @@ terminazione normale della connessione, che ci servir casi seguenti: \begin{enumerate} -\item Inviando un carattere di EOF da terminale la \texttt{fgets} ritorna +\item inviando un carattere di EOF da terminale la \texttt{fgets} ritorna restituendo un puntatore nullo che causa l'uscita dal ciclo di \texttt{while}, così la \texttt{ClientEcho} ritorna. -\item Al ritorno di \texttt{ClientEcho} ritorna anche la funzione +\item al ritorno di \texttt{ClientEcho} ritorna anche la funzione \texttt{main}, e come parte del processo terminazione tutti i file descriptor vengono chiusi (si ricordi quanto visto in \secref{sec:proc_term_conclusion}), il che causa la chiusura del socket di @@ -375,11 +375,11 @@ casi seguenti: risponderà con un ACK. A questo punto il client verrà a trovarsi nello stato \texttt{FIN\_WAIT\_2} ed il server nello stato \texttt{CLOSE\_WAIT} (si riveda quanto spiegato in \secref{sec:TCPel_conn_term}). -\item Quando il server riceve il FIN la la \texttt{read} del processo figlio +\item quando il server riceve il FIN la la \texttt{read} del processo figlio che gestisce la connessione ritorna restituendo 0 causando così l'uscita dal ciclo di \texttt{while} e il ritorno di \texttt{ServEcho}, a questo punto il processo figlio termina chiamando \texttt{exit}. -\item All'uscita del figlio tutti i file descriptor vengono chiusi, la +\item all'uscita del figlio tutti i file descriptor vengono chiusi, la chiusura del socket connesso fa sì che venga effettuata la sequenza finale di chiusura della connessione, viene emesso un FIN dal server che riceverà un ACK dal client, a questo punto la connessione è conclusa e il client @@ -388,7 +388,7 @@ casi seguenti: \end{enumerate} -\subsection{La gestione dei procesi figli} +\subsection{La gestione dei processi figli} \label{sec:TCPsimpl_child_hand} Tutto questo riguarda la connessione, c'è però un'altro effetto del @@ -407,5 +407,5 @@ Poich spazio nella tabella dei processi e a lungo andare saturerebbero le risorse del kernel occorrerà gestire il segnale, per questo installeremo un manipolatore usando la funzione \texttt{Signal} (trattata in dettaglio in -\secref{sec:sig_xxx}). +\secref{sec:sig_signal}).