sempre vera.}, un terminale di controllo. In generale questo viene fatto
automaticamente dal sistema\footnote{a meno di non avere richiesto
esplicitamente che questo non diventi un terminale di controllo con il flag
- \const{O\_NOCTTY} (vedi sez.~\ref{sec:file_open}). In questo Linux segue la
- semantica di SVr4; BSD invece richiede che il terminale venga allocato
- esplicitamente con una \func{ioctl} con il comando \const{TIOCSCTTY}.}
-quando viene aperto il primo terminale (cioè uno dei vari file di dispositivo
-\file{/dev/tty*}) che diventa automaticamente il terminale di controllo,
-mentre il processo diventa il \textsl{processo di controllo} di quella
-sessione.
+ \const{O\_NOCTTY} (vedi sez.~\ref{sec:file_open_close}). In questo Linux
+ segue la semantica di SVr4; BSD invece richiede che il terminale venga
+ allocato esplicitamente con una \func{ioctl} con il comando
+ \const{TIOCSCTTY}.} quando viene aperto il primo terminale (cioè uno dei
+vari file di dispositivo \file{/dev/tty*}) che diventa automaticamente il
+terminale di controllo, mentre il processo diventa il \textsl{processo di
+ controllo} di quella sessione.
In genere (a meno di redirezioni) nelle sessioni di lavoro questo terminale è
associato ai file standard (di input, output ed error) dei processi nella
-\subsection{L'architettura}
-\label{sec:term_design}
+\subsection{L'architettura dell'I/O su terminale}
+\label{sec:term_io_design}
I terminali sono una classe speciale di dispositivi a caratteri (si ricordi la
classificazione di sez.~\ref{sec:file_file_types}); un terminale ha infatti una
dette rispettivamente ``\textsl{modo canonico}'' e ``\textsl{modo non
canonico}'', che hanno dei comportamenti nettamente diversi.
+% TODO: inserire qui il comportamento di read relativo all'errore EIO sulla
+% lettura in background???
+
La modalità preimpostata all'apertura del terminale è quella canonica, in cui
le operazioni di lettura vengono sempre effettuate assemblando i dati in una
linea;\footnote{per cui eseguendo una \func{read} su un terminale in modo
e che le linee di controllo del modem devono essere
ignorate. Se non impostato effettuando una chiamata ad
\func{open} senza aver specificato il flag di
- \const{O\_NOBLOCK} si bloccherà il processo finché
+ \const{O\_NONBLOCK} si bloccherà il processo finché
non si è stabilita una connessione con il modem; inoltre
se viene rilevata una disconnessione viene inviato un
segnale di \signal{SIGHUP} al processo di controllo del
% LocalWords: BRKINT IGNCR carriage return newline ICRNL INLCR IUCLC IXON NL
% LocalWords: IXANY IXOFF IMAXBEL iflag OPOST CR OCRNL OLCUC ONLCR ONOCR OFILL
% LocalWords: ONLRET OFDEL NLDLY CRDLY TABDLY BSDLY backspace BS VTDLY FFDLY
-% LocalWords: form feed FF oflag CLOCAL NOBLOCK of HUPCL CREAD CSTOPB PARENB
+% LocalWords: form feed FF oflag CLOCAL of HUPCL CREAD CSTOPB PARENB
% LocalWords: PARODD CSIZE CS CBAUD CBAUDEX CIBAUD CRTSCTS RTS CTS cflag ECHO
% LocalWords: ICANON ECHOE ERASE ECHOPRT ECHOK ECHOKE ECHONL ECHOCTL ctrl ISIG
% LocalWords: INTR QUIT SUSP IEXTEN EOL LNEXT REPRINT WERASE NOFLSH and TOSTOP