\textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \const{ARG\_MAX} &131072& dimensione massima degli argomenti
+ \const{ARG\_MAX} &131072& Dimensione massima degli argomenti
passati ad una funzione della famiglia
\func{exec}.\\
- \const{CHILD\_MAX} & 999& numero massimo di processi contemporanei
+ \const{CHILD\_MAX} & 999& Numero massimo di processi contemporanei
che un utente può eseguire.\\
- \const{OPEN\_MAX} & 256& numero massimo di file che un processo
+ \const{OPEN\_MAX} & 256& Numero massimo di file che un processo
può mantenere aperti in contemporanea.\\
- \const{STREAM\_MAX}& 8& massimo numero di stream aperti per
+ \const{STREAM\_MAX}& 8& Massimo numero di stream aperti per
processo in contemporanea.\\
- \const{TZNAME\_MAX}& 6& dimensione massima del nome di una
+ \const{TZNAME\_MAX}& 6& Dimensione massima del nome di una
\texttt{timezone} (vedi
sez.~\ref{sec:sys_time_base})).\\
- \const{NGROUPS\_MAX}& 32& numero di gruppi supplementari per
+ \const{NGROUPS\_MAX}& 32& Numero di gruppi supplementari per
processo (vedi sez.~\ref{sec:proc_access_id}).\\
- \const{SSIZE\_MAX}&32767& valore massimo del tipo \type{ssize\_t}.\\
- \hline
+ \const{SSIZE\_MAX}&32767& Valore massimo del tipo \type{ssize\_t}.\\
\hline
\end{tabular}
\caption{Costanti per i limiti del sistema.}
\textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \const{\_POSIX\_ARG\_MAX} & 4096& dimensione massima degli argomenti
+ \const{\_POSIX\_ARG\_MAX} & 4096& Dimensione massima degli argomenti
passati ad una funzione della famiglia
\func{exec}.\\
- \const{\_POSIX\_CHILD\_MAX} & 6& numero massimo di processi
+ \const{\_POSIX\_CHILD\_MAX} & 6& Numero massimo di processi
contemporanei che un utente può
eseguire.\\
- \const{\_POSIX\_OPEN\_MAX} & 16& numero massimo di file che un processo
+ \const{\_POSIX\_OPEN\_MAX} & 16& Numero massimo di file che un processo
può mantenere aperti in
contemporanea.\\
- \const{\_POSIX\_STREAM\_MAX} & 8& massimo numero di stream aperti per
+ \const{\_POSIX\_STREAM\_MAX} & 8& Massimo numero di stream aperti per
processo in contemporanea.\\
- \const{\_POSIX\_TZNAME\_MAX} & & dimensione massima del nome di una
+ \const{\_POSIX\_TZNAME\_MAX} & & Dimensione massima del nome di una
\textit{timezone} (vedi
sez.~\ref{sec:sys_date}). \\
- \const{\_POSIX\_NGROUPS\_MAX}& 0& numero di gruppi supplementari per
+ \const{\_POSIX\_NGROUPS\_MAX}& 0& Numero di gruppi supplementari per
processo (vedi
sez.~\ref{sec:proc_access_id}).\\
- \const{\_POSIX\_SSIZE\_MAX} &32767& valore massimo del tipo
+ \const{\_POSIX\_SSIZE\_MAX} &32767& Valore massimo del tipo
\type{ssize\_t}.\\
\const{\_POSIX\_AIO\_LISTIO\_MAX}&2& \\
\const{\_POSIX\_AIO\_MAX} & 1& \\
\hline
- \hline
\end{tabular}
\caption{Macro dei valori minimi delle caratteristiche generali del sistema
per la conformità allo standard POSIX.1.}
\textbf{Macro}&\textbf{Significato}\\
\hline
\hline
- \macro{\_POSIX\_JOB\_CONTROL}& il sistema supporta il
+ \macro{\_POSIX\_JOB\_CONTROL}& Il sistema supporta il
\textit{job control} (vedi
sez.~\ref{sec:sess_job_control}).\\
- \macro{\_POSIX\_SAVED\_IDS} & il sistema supporta gli identificatori del
+ \macro{\_POSIX\_SAVED\_IDS} & Il sistema supporta gli identificatori del
gruppo \textit{saved} (vedi
sez.~\ref{sec:proc_access_id})
per il controllo di accesso dei processi\\
- \const{\_POSIX\_VERSION} & fornisce la versione dello standard POSIX.1
+ \const{\_POSIX\_VERSION} & Fornisce la versione dello standard POSIX.1
supportata nel formato YYYYMML (ad esempio
199009L).\\
\hline
\textbf{Costante}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \const{LINK\_MAX} &8 & numero massimo di link a un file\\
- \const{NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\
- \const{PATH\_MAX}& 256 & lunghezza in byte di un
+ \const{LINK\_MAX} &8 & Numero massimo di link a un file.\\
+ \const{NAME\_MAX}& 14 & Lunghezza in byte di un nome di file. \\
+ \const{PATH\_MAX}& 256 & Lunghezza in byte di un
\itindex{pathname} \textit{pathname}.\\
- \const{PIPE\_BUF}&4096 & byte scrivibili atomicamente in una pipe
+ \const{PIPE\_BUF}&4096 & Byte scrivibili atomicamente in una pipe
(vedi sez.~\ref{sec:ipc_pipes}).\\
- \const{MAX\_CANON}&255 & dimensione di una riga di terminale in modo
+ \const{MAX\_CANON}&255 & Dimensione di una riga di terminale in modo
canonico (vedi sez.~\ref{sec:term_design}).\\
- \const{MAX\_INPUT}&255 & spazio disponibile nella coda di input
+ \const{MAX\_INPUT}&255 & Spazio disponibile nella coda di input
del terminale (vedi
sez.~\ref{sec:term_design}).\\
\hline
\textbf{Macro}&\textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \const{\_POSIX\_LINK\_MAX} &8 & numero massimo di link a un file.\\
- \const{\_POSIX\_NAME\_MAX}& 14 & lunghezza in byte di un nome di file. \\
- \const{\_POSIX\_PATH\_MAX}& 256 & lunghezza in byte di un
- \itindex{pathname} \textit{pathname}.\\
- \const{\_POSIX\_PIPE\_BUF}& 512 & byte scrivibili atomicamente in una
- pipe.\\
- \const{\_POSIX\_MAX\_CANON}&255 & dimensione di una riga di
- terminale in modo canonico.\\
- \const{\_POSIX\_MAX\_INPUT}&255 & spazio disponibile nella coda di input
- del terminale.\\
+ \const{\_POSIX\_LINK\_MAX} &8 & Numero massimo di link a un file.\\
+ \const{\_POSIX\_NAME\_MAX}& 14 & Lunghezza in byte di un nome di file.\\
+ \const{\_POSIX\_PATH\_MAX}& 256 & Lunghezza in byte di un
+ \itindex{pathname} \textit{pathname}.\\
+ \const{\_POSIX\_PIPE\_BUF}& 512 & Byte scrivibili atomicamente in una
+ pipe.\\
+ \const{\_POSIX\_MAX\_CANON}&255 & Dimensione di una riga di
+ terminale in modo canonico.\\
+ \const{\_POSIX\_MAX\_INPUT}&255 & Spazio disponibile nella coda di input
+ del terminale.\\
% \const{\_POSIX\_MQ\_OPEN\_MAX}& 8& \\
% \const{\_POSIX\_MQ\_PRIO\_MAX}& 32& \\
% \const{\_POSIX\_FD\_SETSIZE}& 16 & \\
\textbf{Parametro} & \textbf{Valore}&\textbf{Significato}\\
\hline
\hline
- \const{MS\_RDONLY} & 1 & monta in sola lettura.\\
- \const{MS\_NOSUID} & 2 & ignora i bit \itindex{suid~bit} \acr{suid} e
+ \const{MS\_RDONLY} & 1 & Monta in sola lettura.\\
+ \const{MS\_NOSUID} & 2 & Ignora i bit \itindex{suid~bit} \acr{suid} e
\itindex{sgid~bit} \acr{sgid}.\\
- \const{MS\_NODEV} & 4 & impedisce l'accesso ai file di dispositivo.\\
- \const{MS\_NOEXEC} & 8 & impedisce di eseguire programmi.\\
- \const{MS\_SYNCHRONOUS}& 16 & abilita la scrittura sincrona.\\
- \const{MS\_REMOUNT} & 32 & rimonta il filesystem cambiando le opzioni.\\
- \const{MS\_MANDLOCK} & 64 & consente il \textit{mandatory locking}
+ \const{MS\_NODEV} & 4 & Impedisce l'accesso ai file di dispositivo.\\
+ \const{MS\_NOEXEC} & 8 & Impedisce di eseguire programmi.\\
+ \const{MS\_SYNCHRONOUS}& 16 & Abilita la scrittura sincrona.\\
+ \const{MS\_REMOUNT} & 32 & Rimonta il filesystem cambiando le opzioni.\\
+ \const{MS\_MANDLOCK} & 64 & Consente il \textit{mandatory locking}
\itindex{mandatory~locking} (vedi
sez.~\ref{sec:file_mand_locking}).\\
- \const{S\_WRITE} & 128 & scrive normalmente.\\
- \const{S\_APPEND} & 256 & consente la scrittura solo in
+ \const{S\_WRITE} & 128 & Scrive normalmente.\\
+ \const{S\_APPEND} & 256 & Consente la scrittura solo in
\itindex{append~mode} \textit{append mode}
(vedi sez.~\ref{sec:file_sharing}).\\
- \const{S\_IMMUTABLE} & 512 & impedisce che si possano modificare i file.\\
- \const{MS\_NOATIME} &1024 & non aggiorna gli \textit{access time} (vedi
+ \const{S\_IMMUTABLE} & 512 & Impedisce che si possano modificare i file.\\
+ \const{MS\_NOATIME} &1024 & Non aggiorna gli \textit{access time} (vedi
sez.~\ref{sec:file_file_times}).\\
- \const{MS\_NODIRATIME}&2048 & non aggiorna gli \textit{access time} delle
+ \const{MS\_NODIRATIME}&2048 & Non aggiorna gli \textit{access time} delle
directory.\\
- \const{MS\_BIND} &4096 & monta il filesystem altrove.\\
- \const{MS\_MOVE} &8192 & sposta atomicamente il punto di montaggio.\\
+ \const{MS\_BIND} &4096 & Monta il filesystem altrove.\\
+ \const{MS\_MOVE} &8192 & Sposta atomicamente il punto di montaggio.\\
\hline
\end{tabular}
\caption{Tabella dei codici dei flag di montaggio di un filesystem.}
\label{tab:sys_mount_flags}
\end{table}
+% TODO aggiornare con i nuovi flag di man mount
+
Per l'impostazione delle caratteristiche particolari di ciascun filesystem si
usa invece l'argomento \param{data} che serve per passare le ulteriori
informazioni necessarie, che ovviamente variano da filesystem a filesystem.
evitando l'errore di \errcode{EBUSY}. In tutti i casi prima dello smontaggio
viene eseguita una sincronizzazione dei dati.
+% TODO documentare MNT_DETACH e MNT_EXPIRE ...
+
Altre due funzioni specifiche di Linux,\footnote{esse si trovano anche su BSD,
ma con una struttura diversa.} utili per ottenere in maniera diretta
informazioni riguardo al filesystem su cui si trova un certo file, sono
tralasceremo la trattazione, rimandando al manuale delle \acr{glibc}
\cite{glibc} per la documentazione completa.
+
+
% TODO scrivere relativamente alle varie funzioni (getfsent e getmntent &C)
\subsection{La gestione delle informazioni su utenti e gruppi}
I dati vengono usualmente\footnote{questa è la locazione specificata dal
\textit{Linux Filesystem Hierarchy Standard}, adottato dalla gran parte
delle distribuzioni.} memorizzati nei due file \file{/var/run/utmp} e
-\file{/var/log/wtmp}. Quando un utente si collega viene aggiunta una voce a
-\file{/var/run/utmp} in cui viene memorizzato il nome di login, il terminale
-da cui ci si collega, l'\acr{uid} della shell di login, l'orario della
-connessione ed altre informazioni. La voce resta nel file fino al logout,
-quando viene cancellata e spostata in \file{/var/log/wtmp}.
+\file{/var/log/wtmp}.\footnote{non si confonda quest'ultimo con il simile
+ \file{/var/log/btmp} dove invece vengono memorizzati dal programma di login
+ tutti tentativi di accesso fallito.} Quando un utente si collega viene
+aggiunta una voce a \file{/var/run/utmp} in cui viene memorizzato il nome di
+login, il terminale da cui ci si collega, l'\acr{uid} della shell di login,
+l'orario della connessione ed altre informazioni. La voce resta nel file fino
+al logout, quando viene cancellata e spostata in \file{/var/log/wtmp}.
In questo modo il primo file viene utilizzato per registrare chi sta
utilizzando il sistema al momento corrente, mentre il secondo mantiene la
\bodydesc{Le funzioni non ritornano codici di errore.}
\end{functions}
-
-In caso questo non venga specificato nessun file viene usato il valore
-standard \const{\_PATH\_UTMP} (che è definito in \file{paths.h}); in genere
-\func{utmpname} prevede due possibili valori:
+e si tenga presente che le funzioni non restituiscono nessun valore, pertanto
+non è possibile accorgersi di eventuali errori (ad esempio se si è impostato
+un nome di file sbagliato con \func{utmpname}).
+
+Nel caso non si sia utilizzata \func{utmpname} per specificare un file di
+registro alternativo, sia \func{setutent} che \func{endutent} operano usando
+il default che è \file{/var/run/utmp}. Il nome di questo file, così come una
+serie di altri valori di default per i \textit{pathname} di uso più comune,
+viene mantenuto nei valori di una serie di costanti definite includendo
+\file{paths.h}, in particolare quelle che ci interessano sono:
\begin{basedescript}{\desclabelwidth{2.0cm}}
-\item[\const{\_PATH\_UTMP}] Specifica il registro per gli utenti correntemente
- collegati.
-\item[\const{\_PATH\_WTMP}] Specifica il registro per l'archivio storico degli
- utenti collegati.
+\item[\const{\_PATH\_UTMP}] specifica il file che contiene il registro per gli
+ utenti correntemente collegati; questo è il valore che viene usato se non si
+ è utilizzato \func{utmpname} per modificarlo.
+\item[\const{\_PATH\_WTMP}] specifica il file che contiene il registro per
+ l'archivio storico degli utenti collegati.
\end{basedescript}
-corrispondenti ai file \file{/var/run/utmp} e \file{/var/log/wtmp} visti in
-precedenza.
+che nel caso di Linux hanno un valore corrispondente ai file
+\file{/var/run/utmp} e \file{/var/log/wtmp} citati in precedenza.
-\begin{figure}[!htb]
- \footnotesize
- \centering
- \begin{minipage}[c]{15cm}
- \includestruct{listati/utmp.h}
- \end{minipage}
- \normalsize
- \caption{La struttura \structd{utmp} contenente le informazioni di una voce
- del registro di \textsl{contabilità}.}
- \label{fig:sys_utmp_struct}
-\end{figure}
-
-Una volta aperto il file si può eseguire una scansione leggendo o scrivendo
-una voce con le funzioni \funcd{getutent}, \funcd{getutid}, \funcd{getutline}
-e \funcd{pututline}, i cui prototipi sono:
+Una volta aperto il file del registro degli utenti si può eseguire una
+scansione leggendo o scrivendo una voce con le funzioni \funcd{getutent},
+\funcd{getutid}, \funcd{getutline} e \funcd{pututline}, i cui prototipi sono:
\begin{functions}
\headdecl{utmp.h}
voce dal registro; \func{getutent} legge semplicemente la prima voce
disponibile; le altre due permettono di eseguire una ricerca.
+
+\begin{figure}[!htb]
+ \footnotesize
+ \centering
+ \begin{minipage}[c]{15cm}
+ \includestruct{listati/utmp.h}
+ \end{minipage}
+ \normalsize
+ \caption{La struttura \structd{utmp} contenente le informazioni di una voce
+ del registro di \textsl{contabilità}.}
+ \label{fig:sys_utmp_struct}
+\end{figure}
+
Con \func{getutid} si può cercare una voce specifica, a seconda del valore del
campo \var{ut\_type} dell'argomento \param{ut}. Questo può assumere i valori
riportati in tab.~\ref{tab:sys_ut_type}, quando assume i valori
\textbf{Valore} & \textbf{Significato}\\
\hline
\hline
- \const{EMPTY} & Non contiene informazioni valide. \\
- \const{RUN\_LVL} & Identica il runlevel del sistema. \\
- \const{BOOT\_TIME} & Identifica il tempo di avvio del sistema \\
+ \const{EMPTY} & Non contiene informazioni valide.\\
+ \const{RUN\_LVL} & Identica il runlevel del sistema.\\
+ \const{BOOT\_TIME} & Identifica il tempo di avvio del sistema.\\
\const{OLD\_TIME} & Identifica quando è stato modificato l'orologio di
- sistema. \\
+ sistema.\\
\const{NEW\_TIME} & Identifica da quanto è stato modificato il
- sistema. \\
- \const{INIT\_PROCESS} & Identifica un processo lanciato da \cmd{init}. \\
- \const{LOGIN\_PROCESS}& Identifica un processo di login. \\
- \const{USER\_PROCESS} & Identifica un processo utente. \\
- \const{DEAD\_PROCESS} & Identifica un processo terminato. \\
+ sistema.\\
+ \const{INIT\_PROCESS} & Identifica un processo lanciato da \cmd{init}.\\
+ \const{LOGIN\_PROCESS}& Identifica un processo di login.\\
+ \const{USER\_PROCESS} & Identifica un processo utente.\\
+ \const{DEAD\_PROCESS} & Identifica un processo terminato.\\
% \const{ACCOUNTING} & ??? \\
\hline
\end{tabular}
\subsection{L'uso delle risorse}
\label{sec:sys_resource_use}
-Come abbiamo accennato in sez.~\ref{sec:proc_wait4} le informazioni riguardo
+Come abbiamo accennato in sez.~\ref{sec:proc_wait} le informazioni riguardo
l'utilizzo delle risorse da parte di un processo è mantenuto in una struttura
di tipo \struct{rusage}, la cui definizione (che si trova in
\file{sys/resource.h}) è riportata in fig.~\ref{fig:sys_rusage_struct}.
\struct{timeval}.
Questa è la stessa struttura utilizzata da \func{wait4} (si ricordi quando
-visto in sez.~\ref{sec:proc_wait4}) per ricavare la quantità di risorse
+visto in sez.~\ref{sec:proc_wait}) per ricavare la quantità di risorse
impiegate dal processo di cui si è letto lo stato di terminazione, ma essa può
anche essere letta direttamente utilizzando la funzione \funcd{getrusage}, il
cui prototipo è:
\errcode{ENOMEM}, mentre se il superamento viene
causato dalla crescita dello \itindex{stack}
stack il processo riceverà un segnale di
- \const{SIGSEGV}. \\
+ \const{SIGSEGV}.\\
\const{RLIMIT\_CORE} & La massima dimensione per di un file di
\itindex{core~dump} \textit{core dump} (vedi
sez.~\ref{sec:sig_prog_error}) creato nella
\hline
\hline
\const{TIME\_OK} & 0 & L'orologio è sincronizzato.\\
- \const{TIME\_INS} & 1 & insert leap second.\\
- \const{TIME\_DEL} & 2 & delete leap second.\\
- \const{TIME\_OOP} & 3 & leap second in progress.\\
- \const{TIME\_WAIT} & 4 & leap second has occurred.\\
+ \const{TIME\_INS} & 1 & Insert leap second.\\
+ \const{TIME\_DEL} & 2 & Delete leap second.\\
+ \const{TIME\_OOP} & 3 & Leap second in progress.\\
+ \const{TIME\_WAIT} & 4 & Leap second has occurred.\\
\const{TIME\_BAD} & 5 & L'orologio non è sincronizzato.\\
\hline
\end{tabular}
che errori relativi alla stessa linea non vengano ripetuti.
-
-
-%%% Local Variables:
-%%% mode: latex
-%%% TeX-master: "gapil"
-%%% End:
-
% LocalWords: filesystem like kernel saved header limits sysconf sez tab float
% LocalWords: FOPEN stdio MB LEN CHAR char UCHAR unsigned SCHAR MIN signed INT
% LocalWords: SHRT short USHRT int UINT LONG long ULONG LLONG ULLONG POSIX ARG
% LocalWords: strftime thread EOF modifiable lvalue app errcode strerror LC at
% LocalWords: perror string errnum MESSAGES error message ErrCode strtol log
% LocalWords: program invocation argv printf print progname exit count fname
-% LocalWords: lineno one standardese Di
+% LocalWords: lineno one standardese Di
+
+
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "gapil"
+%%% End: