+Lo standard POSIX prevede alcune funzioni che permettono di intervenire
+direttamente sulla gestione di quest'ultime e sull'interazione fra i dati in
+ingresso ed uscita e le relative code. In generale tutte queste funzioni
+vengono considerate, dal punto di vista dell'accesso al terminale, come delle
+funzioni di scrittura, pertanto se usate da processi in background sul loro
+terminale di controllo provocano l'emissione di \const{SIGTTOU} come
+illustrato in sez.~\ref{sec:sess_ctrl_term}.\footnote{con la stessa eccezione,
+ già vista per \func{tcsetaddr}, che quest'ultimo sia bloccato o ignorato dal
+ processo chiamante.}
+
+Una prima funzione, che è efficace solo in caso di terminali seriali asincroni
+(non fa niente per tutti gli altri terminali), è \funcd{tcsendbreak}; il suo
+prototipo è:
+\begin{functions}
+ \headdecl{unistd.h}
+ \headdecl{termios.h}
+
+ \funcdecl{int tcsendbreak(int fd, int duration)} Genera una condizione di
+ break inviando un flusso di bit nulli.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà i valori \errval{EBADF} o
+ \errval{ENOTTY}.}
+\end{functions}
+
+La funzione invia un flusso di bit nulli (che genera una condizione di break)
+sul terminale associato a \param{fd}; un valore nullo di \param{duration}
+implica una durata del flusso fra 0.25 e 0.5 secondi, un valore diverso da
+zero implica una durata pari a \code{duration*T} dove \code{T} è un valore
+compreso fra 0.25 e 0.5.\footnote{POSIX specifica il comportamento solo nel
+ caso si sia impostato un valore nullo per \param{duration}; il comportamento
+ negli altri casi può dipendere dalla implementazione.}
+
+Le altre funzioni previste da POSIX servono a controllare il comportamento
+dell'interazione fra le code associate al terminale e l'utente; la prima è
+\funcd{tcdrain}, il cui prototipo è:
+\begin{functions}
+ \headdecl{unistd.h}
+ \headdecl{termios.h}
+
+ \funcdecl{int tcdrain(int fd)} Attende lo svuotamento della coda di output.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà i valori \errval{EBADF} o
+ \errval{ENOTTY}.}
+\end{functions}
+
+La funzione blocca il processo fino a che tutto l'output presente sulla coda
+di uscita non è stato trasmesso al terminale associato ad \param{fd}. % La
+ % funzione è un punto di cancellazione per i
+ % programmi multi-thread, in tal caso le
+ % chiamate devono essere protette con dei
+ % gestori di cancellazione.
+
+Una seconda funzione, \funcd{tcflush}, permette svuotare immediatamente le code
+di cancellando tutti i dati presenti al loro interno; il suo prototipo è:
+\begin{functions}
+ \headdecl{unistd.h} \headdecl{termios.h}
+
+ \funcdecl{int tcflush(int fd, int queue)} Cancella i dati presenti
+ nelle code di ingresso o di uscita.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà i valori \errval{EBADF} o
+ \errval{ENOTTY}.}
+\end{functions}
+
+La funzione agisce sul terminale associato a \param{fd}, l'argomento
+\param{queue} permette di specificare su quale coda (ingresso, uscita o
+entrambe), operare. Esso può prendere i valori riportati in
+tab.~\ref{tab:sess_tcflush_queue}, nel caso si specifichi la coda di ingresso
+cancellerà i dati ricevuti ma non ancora letti, nel caso si specifichi la coda
+di uscita cancellerà i dati scritti ma non ancora trasmessi.
+
+\begin{table}[htb]
+ \footnotesize
+ \centering
+ \begin{tabular}[c]{|l|p{8cm}|}
+ \hline
+ \textbf{Valore}& \textbf{Significato}\\
+ \hline
+ \hline
+ \const{TCIFLUSH} & Cancella i dati sulla coda di ingresso. \\
+ \const{TCOFLUSH} & Cancella i dati sulla coda di uscita. \\
+ \const{TCIOFLUSH}& Cancella i dati su entrambe le code.\\
+ \hline
+ \end{tabular}
+ \caption{Possibili valori per l'argomento \param{queue} della
+ funzione \func{tcflush}.}
+ \label{tab:sess_tcflush_queue}
+\end{table}
+
+
+L'ultima funzione dell'interfaccia che interviene sulla disciplina di linea è
+\funcd{tcflow}, che viene usata per sospendere la trasmissione e la ricezione
+dei dati sul terminale; il suo prototipo è:
+\begin{functions}
+ \headdecl{unistd.h}
+ \headdecl{termios.h}
+
+ \funcdecl{int tcflow(int fd, int action)}
+
+ Sospende e riavvia il flusso dei dati sul terminale.
+
+ \bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
+ errore, nel qual caso \var{errno} assumerà i valori \errval{EBADF} o
+ \errval{ENOTTY}.}
+\end{functions}
+
+La funzione permette di controllare (interrompendo e facendo riprendere) il
+flusso dei dati fra il terminale ed il sistema sia in ingresso che in uscita.
+Il comportamento della funzione è regolato dall'argomento \param{action}, i
+cui possibili valori, e relativa azione eseguita dalla funzione, sono
+riportati in tab.~\ref{tab:sess_tcflow_action}.
+
+\begin{table}[htb]
+ \footnotesize
+ \centering
+ \begin{tabular}[c]{|l|p{8cm}|}
+ \hline
+ \textbf{Valore}& \textbf{Azione}\\
+ \hline
+ \hline
+ \const{TCOOFF}& Sospende l'output.\\
+ \const{TCOON} & Riprende un output precedentemente sospeso.\\
+ \const{TCIOFF}& Il sistema trasmette un carattere di STOP, che
+ fa interrompere la trasmissione dei dati dal terminale. \\
+ \const{TCION} & Il sistema trasmette un carattere di START, che
+ fa riprendere la trasmissione dei dati dal terminale.\\
+ \hline
+ \end{tabular}
+ \caption{Possibili valori per l'argomento \param{action} della
+ funzione \func{tcflow}.}
+ \label{tab:sess_tcflow_action}
+\end{table}