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
\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
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