decifrare, ma deve poi leggere la password dal terminale.
Un'altra caratteristica del terminale di controllo usata nel job control è che
-utilizzando su di esso le combinazioni di tasti speciali (\cmd{C-z},
-\cmd{C-c}, \cmd{C-y} e \verb|C-\|) si farà sì che il kernel invii i
+utilizzando su di esso le combinazioni di tasti speciali (\texttt{C-z},
+\texttt{C-c}, \texttt{C-y} e \texttt{C-|}) si farà sì che il kernel invii i
corrispondenti segnali (rispettivamente \const{SIGTSTP}, \const{SIGINT},
\const{SIGQUIT} e \const{SIGTERM}, trattati in sez.~\ref{sec:sig_job_control})
a tutti i processi del raggruppamento di \textit{foreground}; in questo modo
Il servizio prevede vari meccanismi di notifica, e, come ogni altro servizio
in un sistema unix-like, viene gestito attraverso un apposito programma,
\cmd{syslogd}, che è anch'esso un \textsl{demone}. In generale i messaggi di
-errore vengono raccolti dal file speciale \file{/dev/log}, un
-\textit{socket}\index{socket} locale (vedi sez.~\ref{sec:sock_sa_local})
-dedicato a questo scopo, o via rete, con un \textit{socket} UDP, o da un
-apposito demone, \cmd{klogd}, che estrae i messaggi del kernel.\footnote{i
- messaggi del kernel sono tenuti in un buffer circolare e scritti tramite la
- funzione \func{printk}, analoga alla \func{printf} usata in user space; una
- trattazione eccellente dell'argomento si trova in \cite{LinDevDri}, nel
- quarto capitolo.}
+errore vengono raccolti dal file speciale \file{/dev/log}, un socket locale
+(vedi sez.~\ref{sec:sock_sa_local}) dedicato a questo scopo, o via rete, con
+un socket UDP, o da un apposito demone, \cmd{klogd}, che estrae i messaggi del
+kernel.\footnote{i messaggi del kernel sono tenuti in un buffer circolare e
+ scritti tramite la funzione \func{printk}, analoga alla \func{printf} usata
+ in user space; una trattazione eccellente dell'argomento si trova in
+ \cite{LinDevDri}, nel quarto capitolo.}
Il servizio permette poi di trattare i vari messaggi classificandoli
attraverso due indici; il primo, chiamato \textit{facility}, suddivide in
Le \acr{glibc} definiscono una serie di funzioni standard con cui un processo
può accedere in maniera generica al servizio di \textit{syslog}, che però
funzionano solo localmente; se si vogliono inviare i messaggi ad un altro
-sistema occorre farlo esplicitamente con un socket\index{socket} UDP, o
-utilizzare le capacità di reinvio del servizio.
+sistema occorre farlo esplicitamente con un socket UDP, o utilizzare le
+capacità di reinvio del servizio.
La prima funzione definita dall'interfaccia è \funcd{openlog}, che apre una
connessione al servizio di \textit{syslog}; essa in generale non è necessaria
l'esempio di BSD, aggiunge i due campi \var{c\_ispeed} e \var{c\_ospeed} per
mantenere le velocità delle linee seriali, ed un campo ulteriore,
\var{c\_line} per ... (NdT, trovare a che serve).}
+% TODO trovare a che serve
\begin{figure}[!htb]
\footnotesize \centering
\begin{table}[b!ht]
\footnotesize
\centering
- \begin{tabular}[c]{|l|p{11cm}|}
+ \begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore}& \textbf{Significato}\\
\hline
\begin{table}[htb]
\footnotesize
\centering
- \begin{tabular}[c]{|l|p{11cm}|}
+ \begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore}& \textbf{Significato}\\
\hline
\begin{table}[htb]
\footnotesize
\centering
- \begin{tabular}[c]{|l|p{11cm}|}
+ \begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore}& \textbf{Significato}\\
\hline
\const{O\_NOBLOCK} si bloccherà il processo finché
non si è stabilita una connessione con il modem; inoltre
se viene rilevata una disconnessione viene inviato un
+ segnale di
\const{SIGHUP} al processo di controllo del terminale. La
lettura su un terminale sconnesso comporta una condizione
di \textit{end of file} e la scrittura un errore di
\begin{table}[b!ht]
\footnotesize
\centering
- \begin{tabular}[c]{|l|p{11cm}|}
+ \begin{tabular}[c]{|l|p{10cm}|}
\hline
\textbf{Valore}& \textbf{Significato}\\
\hline
\const{ECHOPRT}& Se impostato abilita la visualizzazione del carattere di
cancellazione in una modalità adatta ai terminali con
l'uscita su stampante; l'invio del carattere di ERASE
- comporta la stampa di un \verb|\| seguito dal carattere
- cancellato, e così via in caso di successive
+ comporta la stampa di un ``\texttt{|}'' seguito dal
+ carattere cancellato, e così via in caso di successive
cancellazioni, quando si riprende ad immettere carattere
- normali prima verrà stampata una \texttt{/}.\\
+ normali prima verrà stampata una ``\texttt{/}''.\\
\const{ECHOK} & Se impostato abilita il trattamento della visualizzazione
del carattere KILL, andando a capo dopo aver visualizzato
lo stesso, altrimenti viene solo mostrato il carattere e
sta all'utente ricordare che l'input precedente è stato
- cancellato. \\
+ cancellato.\\
\const{ECHOKE} & Se impostato abilita il trattamento della visualizzazione
del carattere KILL cancellando i caratteri precedenti
nella linea secondo le modalità specificate dai valori di
\const{ECHO}. \\
\const{ECHOCTL}& Se impostato insieme ad \const{ECHO} i caratteri di
controllo ASCII (tranne TAB, NL, START, e STOP) sono
- mostrati nella forma che prepone un \verb|^| alla
- lettera ottenuta sommando \texttt{0x40} al valore del
+ mostrati nella forma che prepone un ``\texttt{\circonf}''
+ alla lettera ottenuta sommando \texttt{0x40} al valore del
carattere (di solito questi si possono ottenere anche
direttamente premendo il tasto \texttt{ctrl} più la
relativa lettera).\\
background che cerca di scrivere sul terminale.\\
\const{XCASE} & Se impostato il terminale funziona solo con le
maiuscole. L'input è convertito in minuscole tranne per i
- caratteri preceduti da una \verb|\|. In output le
- maiuscole sono precedute da una \verb|\| e le minuscole
- convertite in maiuscole.\\
+ caratteri preceduti da una ``\texttt{\bslash}''. In output
+ le maiuscole sono precedute da una ``\texttt{\bslash}'' e
+ le minuscole convertite in maiuscole.\\
\const{DEFECHO}& Se impostato effettua l'eco solo se c'è un processo in
lettura.\\
\const{FLUSHO} & Effettua la cancellazione della coda di uscita. Viene
\begin{table}[htb]
\footnotesize
\centering
- \begin{tabular}[c]{|l|c|c|p{8cm}|}
+ \begin{tabular}[c]{|l|c|c|p{7cm}|}
\hline
\textbf{Indice} & \textbf{Valore}&\textbf{Codice} & \textbf{Funzione}\\
\hline
\hline
- \const{VINTR} &\texttt{0x03}&(\verb|C-c|)& Carattere di interrupt,
+ \const{VINTR} &\texttt{0x03}&(\texttt{C-c})& Carattere di interrupt,
provoca l'emissione di
\const{SIGINT}. \\
- \const{VQUIT} &\texttt{0x1C}&(\verb|C-\|)& Carattere di uscita provoca
+ \const{VQUIT} &\texttt{0x1C}&(\texttt{C-|})& Carattere di uscita provoca
l'emissione di
\const{SIGQUIT}.\\
- \const{VERASE} &\texttt{0x7f}& DEL & Carattere di ERASE, cancella
- l'ultimo carattere precedente
- nella linea.\\
- \const{VKILL} &\texttt{0x15}&(\verb|C-u|)& Carattere di KILL, cancella
+ \const{VERASE}&\texttt{0x7f}& DEL & Carattere di ERASE, cancella
+ l'ultimo carattere
+ precedente nella linea.\\
+ \const{VKILL} &\texttt{0x15}&(\texttt{C-u})& Carattere di KILL, cancella
l'intera riga.\\
- \const{VEOF} &\texttt{0x04}&(\verb|C-d|)& Carattere di
+ \const{VEOF} &\texttt{0x04}&(\texttt{C-d})& Carattere di
\textit{end-of-file}. Causa
l'invio del contenuto del
buffer di ingresso al
zero caratteri, cioè la
condizione di
\textit{end-of-file}.\\
- \const{VTIME} & --- & --- & Timeout, in decimi di secondo, per
- una lettura in modo non canonico. \\
- \const{VMIN} & --- & --- & Numero minimo di caratteri per una
- lettura in modo non canonico.\\
- \const{VSWTC} &\texttt{0x00}& NUL & Carattere di switch. Non supportato
- in Linux.\\
- \const{VSTART} &\texttt{0x21}&(\verb|C-q|)& Carattere di START. Riavvia un
+ \const{VTIME} & --- & --- & Timeout, in decimi di secondo, per
+ una lettura in modo non canonico.\\
+ \const{VMIN} & --- & --- & Numero minimo di caratteri per una
+ lettura in modo non canonico.\\
+ \const{VSWTC} &\texttt{0x00}& NUL & Carattere di switch. Non supportato
+ in Linux.\\
+ \const{VSTART}&\texttt{0x21}&(\texttt{C-q})& Carattere di START. Riavvia un
output bloccato da uno STOP.\\
- \const{VSTOP} &\texttt{0x23}&(\verb|C-s|)& Carattere di STOP. Blocca
+ \const{VSTOP} &\texttt{0x23}&(\texttt{C-s})& Carattere di STOP. Blocca
l'output fintanto che non
viene premuto un carattere di
START.\\
- \const{VSUSP} &\texttt{0x1A}&(\verb|C-z|)& Carattere di
+ \const{VSUSP} &\texttt{0x1A}&(\texttt{C-z})& Carattere di
sospensione. Invia il segnale
\const{SIGTSTP}.\\
- \const{VEOL} &\texttt{0x00}& NUL & Carattere di fine riga. Agisce come
- un a capo, ma non viene scartato ed
- è letto come l'ultimo carattere
- nella riga. \\
- \const{VREPRINT}&\texttt{0x12}&(\verb|C-r|)& Ristampa i caratteri non
+ \const{VEOL} &\texttt{0x00}& NUL & Carattere di fine riga. Agisce come
+ un a capo, ma non viene scartato ed
+ è letto come l'ultimo carattere
+ nella riga. \\
+ \const{VREPRINT}&\texttt{0x12}&(\texttt{C-r})& Ristampa i caratteri non
ancora letti. \\
- \const{VDISCARD}&\texttt{0x07}&(\verb|C-o|)& Non riconosciuto in Linux. \\
- \const{VWERASE} &\texttt{0x17}&(\verb|C-w|)& Cancellazione di una parola.\\
- \const{VLNEXT} &\texttt{0x16}&(\verb|C-v|)& Carattere di escape, serve a
+ \const{VDISCARD}&\texttt{0x07}&(\texttt{C-o})& Non riconosciuto in Linux.\\
+ \const{VWERASE}&\texttt{0x17}&(\texttt{C-w})&Cancellazione di una
+ parola.\\
+ \const{VLNEXT}&\texttt{0x16}&(\texttt{C-v})& Carattere di escape, serve a
quotare il carattere
successivo che non viene
interpretato ma passato
direttamente all'output. \\
- \const{VEOL2} &\texttt{0x00}& NUL & Ulteriore carattere di fine
- riga. Ha lo stesso effetto di
- \const{VEOL} ma può essere un
- carattere diverso. \\
+ \const{VEOL2} &\texttt{0x00}& NUL & Ulteriore carattere di fine
+ riga. Ha lo stesso effetto di
+ \const{VEOL} ma può essere un
+ carattere diverso. \\
\hline
\end{tabular}
\caption{Valori dei caratteri di controllo mantenuti nel campo \var{c\_cc}
POSIX.1 prevede una serie di costanti che però servono solo per specificare le
velocità tipiche delle linee seriali:
\begin{verbatim}
- B0 B50 B75
- B110 B134 B150
- B200 B300 B600
- B1200 B1800 B2400
- B4800 B9600 B19200
- B38400 B57600 B115200
- B230400 B460800
+ B0 B50 B75 B110 B134 B150 B200
+ B300 B600 B1200 B1800 B2400 B4800 B9600
+ B19200 B38400 B57600 B115200 B230400 B460800
\end{verbatim}
Un terminale può utilizzare solo alcune delle velocità possibili, le funzioni
però non controllano se il valore specificato è valido, dato che non possono
sapere a quale terminale le velocità saranno applicate; sarà l'esecuzione di
\func{tcsetattr} a fallire quando si cercherà di eseguire l'impostazione.
-
Di norma il valore ha senso solo per i terminali seriali dove indica appunto
la velocità della linea di trasmissione; se questa non corrisponde a quella
del terminale quest'ultimo non potrà funzionare: quando il terminale non è
% LocalWords: SetTermAttr UnSetTermAttr cfsetispeed cfsetospeed cfgetispeed
% LocalWords: cfgetospeed quest'ultime tcsendbreak duration break tcdrain
% LocalWords: tcflush queue TCIFLUSH TCOFLUSH TCIOFLUSH tcflow action TCOOFF
-% LocalWords: TCOON TCIOFF TCION timer openpty
+% LocalWords: TCOON TCIOFF TCION timer openpty Window nochdir