\conffile{/etc/passwd} e \conffile{/etc/group}.\footnote{in realtà negli
sistemi più moderni, come vedremo in sez.~\ref{sec:sys_user_group} queste
informazioni possono essere mantenute, con l'uso del
- \itindex{Name~Service~Switch} \textit{Name Service Switch}, su varie
+ \itindex{Name~Service~Switch~(NSS)} \textit{Name Service Switch}, su varie
tipologie di supporti, compresi server centralizzati come LDAP.} Questi
identificativi sono l'\textit{user identifier}, detto in breve
\textsl{user-ID}, ed indicato dall'acronimo \ids{UID}, e il \textit{group
sta in cima all'albero, essa viene indicata semplicemente con il
\textit{pathname} \file{/}.
+\itindbeg{pathname~resolution}
+
Un file può essere indicato rispetto ad una directory semplicemente
specificandone il nome, il manuale della \acr{glibc} chiama i nomi contenuti
nelle directory \textsl{componenti} (in inglese \textit{file name
sez.~\ref{sec:file_chroot}) è la stessa per tutti i processi ed equivale alla
directory radice dell'albero dei file; in questo caso si parla di un
\textsl{pathname assoluto} \itindsub{pathname}{assoluto}. Altrimenti la
-ricerca parte dalla directory di lavoro corrente del processo (su cui
-torneremo in sez.~\ref{sec:file_work_dir}) ed il \textit{pathname} è detto
-\itindsub{pathname}{relativo} \textsl{pathname relativo}.
+ricerca parte dalla \index{directory~di~lavoro} directory di lavoro corrente
+del processo (su cui torneremo in sez.~\ref{sec:file_work_dir}) ed il
+\textit{pathname} è detto \itindsub{pathname}{relativo} \textsl{pathname
+ relativo}.
Infine i nomi di directory ``\file{.}'' e ``\file{..}'' hanno un significato
speciale e vengono inseriti in ogni directory quando questa viene creata (vedi
directory}) cioè la directory che contiene il riferimento alla directory
corrente.
-In questo modo con ``\file{..}'' si può usare un \textsl{pathname relativo}
-per indicare un file posto al di sopra della directory corrente, tornando
-all'indietro nell'albero dei file. Questa retromarcia però su fermerà una
-volta raggiunta la directory radice, perché non esistendo in questo caso una
-directory superiore, il nome ``\file{..}'' farà riferimento alla radice
-stessa.
+In questo modo con ``\file{..}'' si può usare un \itindsub{pathname}{relativo}
+pathname relativo per indicare un file posto al di sopra della directory
+corrente, tornando all'indietro nell'albero dei file. Questa retromarcia però
+su fermerà una volta raggiunta la directory radice, perché non esistendo in
+questo caso una directory superiore, il nome ``\file{..}'' farà riferimento
+alla radice stessa.
\itindend{pathname}
+\itindend{pathname~resolution}
\subsection{I tipi di file}
dispositivi. L'accesso viene gestito attraverso i \textit{file descriptor} che
sono rappresentati da numeri interi (cioè semplici variabili di tipo
\ctyp{int}). L'interfaccia è definita nell'\textit{header file}
-\file{unistd.h} e la tratteremo in dettaglio in
+\headfile{unistd.h} e la tratteremo in dettaglio in
cap.~\ref{cha:file_unix_interface}.
\itindbeg{file~stream}
Unix. Gli \textit{stream} sono oggetti complessi e sono rappresentati da
puntatori ad un opportuna struttura definita dalle librerie del C, ad essi si
accede sempre in maniera indiretta utilizzando il tipo \code{FILE *}.
-L'interfaccia è definita nell'\textit{header file} \file{stdio.h} e la
+L'interfaccia è definita nell'\textit{header file} \headfile{stdio.h} e la
tratteremo in dettaglio nel cap.~\ref{cha:files_std_interface}.
Entrambe le interfacce possono essere usate per l'accesso ai file come agli
sez.~\ref{sec:proc_access_id}).\\
\hline
\end{tabular}
- \caption{Elenco dei tipi primitivi, definiti in \file{sys/types.h}.}
+ \caption{Elenco dei tipi primitivi, definiti in \headfile{sys/types.h}.}
\label{tab:intro_primitive_types}
\end{table}
riferimento ai tipi elementari dello standard del linguaggio C, ma ad una
serie di \index{tipo!primitivo} \textsl{tipi primitivi} del sistema, riportati
in tab.~\ref{tab:intro_primitive_types}, e definiti nell'\textit{header file}
-\file{sys/types.h}, in modo da mantenere completamente indipendenti i tipi
+\headfile{sys/types.h}, in modo da mantenere completamente indipendenti i tipi
utilizzati dalle funzioni di sistema dai tipi elementari supportati dal
compilatore C.
Le funzionalità implementate sono principalmente il meccanismo di
intercomunicazione fra i processi e la memoria condivisa (il cosiddetto System
V IPC, che vedremo in sez.~\ref{sec:ipc_sysv}) le funzioni della famiglia
-\func{hsearch} e \func{drand48}, \func{fmtmsg} e svariate funzioni
+\funcm{hsearch} e \funcm{drand48}, \funcm{fmtmsg} e svariate funzioni
matematiche.
a 64 bit nelle funzioni di gestione dei file (non supportati in certi
sistemi), caratterizzate dal suffisso \texttt{64} aggiunto ai vari nomi di
tipi di dato e funzioni (come \type{off64\_t} al posto di \type{off\_t} o
- \func{lseek64} al posto di \func{lseek}).
+ \funcm{lseek64} al posto di \func{lseek}).
Le funzioni di questa interfaccia alternativa sono state proposte come una
estensione ad uso di transizione per le \textit{Single UNIX Specification},
\item[\macro{\_ATFILE\_SOURCE}] definendo questa macro si rendono disponibili
le estensioni delle funzioni di creazione, accesso e modifica di file e
- directory che risolvono i problemi di sicurezza insiti nell'uso di pathname
- relativi con programmi \itindex{thread} \textit{multi-thread} illustrate in
- sez.~\ref{sec:file_openat}.
+ directory che risolvono i problemi di sicurezza insiti nell'uso di
+ \textit{pathname} relativi con programmi \itindex{thread}
+ \textit{multi-thread} illustrate in sez.~\ref{sec:file_openat}.
\item[\macro{\_REENTRANT}] definendo questa macro, o la equivalente
\macro{\_THREAD\_SAFE} (fornita per compatibilità) si rendono disponibili le
Le funzioni di libreria che vengono messe sotto controllo quando questa
funzionalità viene attivata sono, al momento della stesura di queste note,
- le seguenti: \func{memcpy}, \func{mempcpy}, \func{memmove}, \func{memset},
- \func{stpcpy}, \func{strcpy}, \func{strncpy}, \func{strcat}, \func{strncat},
- \func{sprintf}, \func{snprintf}, \func{vsprintf}, \func{vsnprintf}, e
- \func{gets}.
+ le seguenti: \funcm{memcpy}, \funcm{mempcpy}, \funcm{memmove},
+ \funcm{memset}, \funcm{stpcpy}, \funcm{strcpy}, \funcm{strncpy},
+ \funcm{strcat}, \funcm{strncat}, \func{sprintf}, \func{snprintf},
+ \func{vsprintf}, \func{vsnprintf}, e \func{gets}.
La macro prevede due valori, con \texttt{1} vengono eseguiti dei controlli
di base che non cambiano il comportamento dei programmi se si richiede una