-\section{La lettura delle caratteristiche del sistema}
+\section{Capacità e caratteristiche del sistema}
\label{sec:sys_characteristics}
In questa sezione tratteremo le varie modalità con cui un programma può
opzioni di configurazione.
La definizione di queste caratteristiche ed il tentativo di provvedere dei
-meccanismi generali che i programmi potessero usare per ricavarle è uno degli
+meccanismi generali che i programmi possono usare per ricavarle è uno degli
aspetti più complessi e controversi con cui le diverse standardizzazioni si
sono dovute confrontare, spesso con risultati spesso tutt'altro che chiari.
-Proveremo comunque a dare una descrizione dei principali metodi previsti dai
-vari standard per ricavare sia le caratteristiche specifiche del sistema, che
+Daremo comunque una descrizione dei principali metodi previsti dai vari
+standard per ricavare sia le caratteristiche specifiche del sistema, che
quelle della gestione dei file.
\hline
\macro{\_POSIX\_JOB\_CONTROL}& il sistema supporta il
\textit{job control} (vedi
- \secref{sec:sess_xxx}).\\
+ \secref{sec:sess_job_control}).\\
\macro{\_POSIX\_SAVED\_IDS} & il sistema supporta gli identificatori del
gruppo \textit{saved} (vedi
\secref{sec:proc_access_id})
\textit{process time} (vedi \secref{sec:sys_unix_time}).\\
\texttt{\_SC\_JOB\_CONTROL}&\macro{\_POSIX\_JOB\_CONTROL}&
Indica se è supportato il \textit{job control} (vedi
- \secref{sec:sess_xxx}) in stile POSIX.\\
+ \secref{sec:sess_job_control}) in stile POSIX.\\
\texttt{\_SC\_SAVED\_IDS}&\macro{\_POSIX\_SAVED\_IDS}&
Indica se il sistema supporta i \textit{saved id} (vedi
\secref{sec:proc_access_id}).\\
\begin{table}[htb]
\centering
\footnotesize
- \begin{tabular}[c]{|l|r|p{8cm}|}
+ \begin{tabular}[c]{|l|r|l|}
\hline
\textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \macro{NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\
- \macro{PATH\_MAX}& 256 & lunghezza in byte di pathname.\\
- \macro{PIPE\_BUF}&4096 & byte scrivibili atomicamente in una pipe\\
\macro{LINK\_MAX} &8 & numero massimo di link a un file\\
- \macro{MAX\_CANON}&255 & spazio disponibile nella coda di input
- canonica del terminale\\
+ \macro{NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\
+ \macro{PATH\_MAX}& 256 & lunghezza in byte di un pathname.\\
+ \macro{PIPE\_BUF}&4096 & byte scrivibili atomicamente in una pipe
+ (vedi \secref{sec:ipc_pipes}).\\
+ \macro{MAX\_CANON}&255 & dimensione di una riga di terminale in modo
+ canonico (vedi \secref{sec:term_design}).\\
\macro{MAX\_INPUT}&255 & spazio disponibile nella coda di input
- del terminale\\
+ del terminale (vedi \secref{sec:term_design}).\\
\hline
\end{tabular}
\caption{Macro per i limiti sulle caratteristiche dei file.}
\begin{table}[htb]
\centering
\footnotesize
- \begin{tabular}[c]{|l|r|p{8cm}|}
+ \begin{tabular}[c]{|l|r|l|}
\hline
\textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
- \macro{\_POSIX\_LINK\_MAX} &8 & numero massimo di link a un file\\
- \macro{\_POSIX\_MAX\_CANON}&255 & spazio disponibile nella coda di input
- canonica del terminale\\
- \macro{\_POSIX\_MAX\_INPUT}&255 & spazio disponibile nella coda di input
- del terminale\\
+ \macro{\_POSIX\_LINK\_MAX} &8 & numero massimo di link a un file.\\
\macro{\_POSIX\_NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\
- \macro{\_POSIX\_PATH\_MAX}& 256 & lunghezza in byte di pathname.\\
+ \macro{\_POSIX\_PATH\_MAX}& 256 & lunghezza in byte di un pathname.\\
\macro{\_POSIX\_PIPE\_BUF}& 512 & byte scrivibili atomicamente in una
- pipe\\
+ pipe.\\
+ \macro{\_POSIX\_MAX\_CANON}&255 & dimensione di una riga di
+ terminale in modo canonico.\\
+ \macro{\_POSIX\_MAX\_INPUT}&255 & spazio disponibile nella coda di input
+ del terminale.\\
% \macro{\_POSIX\_MQ\_OPEN\_MAX}& 8& \\
% \macro{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
% \macro{\_POSIX\_FD\_SETSIZE}& 16 & \\
l'implementazione è specifica di Linux; il suo prototipo è:
\begin{functions}
\headdecl{unistd.h}
-\headdecl{linux/unistd.h}
-\headdecl{linux/sysctl.h}
\funcdecl{int sysctl(int *name, int nlen, void *oldval, size\_t *oldlenp, void
*newval, size\_t newlen)}
\bodydesc{La funzione restituisce 0 in caso di successo e -1 in caso di
errore, nel qual caso \var{errno} assumerà uno dei valori:
\begin{errlist}
- \item[\macro{EPERM}] il processo non ha il permesso di accedere ad uno dei
- componenti nel cammino specificato per il parametro, o non ha il permesso
- di accesso al parametro nella modalità scelta.
+ \item[\macro{EPERM}] non si ha il permesso di accedere ad uno dei componenti
+ nel cammino specificato per il parametro, o di accedere al parametro nella
+ modalità scelta.
\item[\macro{ENOTDIR}] non esiste un parametro corrispondente al nome
\param{name}.
- \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando
- \param{oldval} è non nullo.
+% \item[\macro{EFAULT}] si è specificato \param{oldlenp} zero quando
+% \param{oldval} è non nullo.
\item[\macro{EINVAL}] o si è specificato un valore non valido per il
parametro che si vuole impostare o lo spazio provvisto per il ritorno di un
valore non è delle giuste dimensioni.
quando non si è specificato sufficiente spazio per ricevere il valore di un
parametro.
\end{errlist}
+ ed inoltre \macro{EFAULT}.
}
\end{functions}
I parametri a cui la funzione permettere di accedere sono organizzati in
-maniera gerarchica all'interno un albero; per accedere ad uno di essi occorre
-specificare un cammino attraverso i vari nodi dell'albero, in maniera analoga
-a come avviene per la risoluzione di un pathname (da cui l'uso alternativo del
-filesystem \file{/proc}, che vedremo dopo).
+maniera gerarchica all'interno un albero;\footnote{si tenga presente che
+ includendo solo \file{unistd.h}, saranno definiti solo i parametri generici;
+ dato che ce ne sono molti specifici dell'implementazione, nel caso di Linux
+ occorrerà includere anche i file \file{linux/unistd.h} e
+ \file{linux/sysctl.h}.} per accedere ad uno di essi occorre specificare un
+cammino attraverso i vari nodi dell'albero, in maniera analoga a come avviene
+per la risoluzione di un pathname (da cui l'uso alternativo del filesystem
+\file{/proc}, che vedremo dopo).
Ciascun nodo dell'albero è identificato da un valore intero, ed il cammino che
arriva ad identificare un parametro specifico è passato alla funzione