X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;h=dba0ded802b955267e70ea87839fabd8cc15dc9c;hp=f18cc3a3018d2138fe714ebfbfea38e83f6ae28c;hb=5afbcf1d6a84ab2a527859d8fd05b75a31e39736;hpb=4d46f47e3a0e08440812b334f79489d92814e6d2 diff --git a/intro.tex b/intro.tex index f18cc3a..dba0ded 100644 --- a/intro.tex +++ b/intro.tex @@ -555,16 +555,21 @@ alle directory indicate nel \textit{pathname} (torneremo su questo sez.~\ref{sec:file_access_control}) dovranno consentire l'accesso all'intero \textit{pathname}. +\itindsubbeg{pathname}{assoluto} +\itindsubbeg{pathname}{relativo} + Se il \textit{pathname} comincia con il carattere ``\texttt{/}'' la ricerca parte dalla directory radice del processo. Questa, a meno di non avere eseguito una \func{chroot} (funzione su cui torneremo in sez.~\ref{sec:file_chroot}) è la stessa per tutti i processi ed equivale alla directory radice dell'albero dei file montata dal kernel all'avvio del -sistema; 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}. +sistema; in questo caso si parla di un \textsl{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 +\textsl{pathname relativo}. + +\itindsubend{pathname}{assoluto} +\itindsubend{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 @@ -573,12 +578,12 @@ corrente e il secondo alla directory \textsl{genitrice} (o \textit{parent directory}) cioè la directory che contiene il riferimento alla directory corrente. -In questo modo con ``\file{..}'' si può usare un \itindsub{pathname}{relativo} -\textit{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 \textit{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} @@ -682,7 +687,7 @@ VMS.\footnote{questo vale anche per i dispositivi a blocchi: la strutturazione attraverso un filesystem, il cosiddetto \textit{raw access}, introdotto coi kernel della serie 2.4.x ma ormai in sostanziale disuso.} -\index{file!di~dispositivo|} +\index{file!di~dispositivo|)} \index{file!speciali|)} Una differenza che attiene ai contenuti di un file però esiste, ed è relativa @@ -887,30 +892,30 @@ infinita serie di problemi di portabilità. \textbf{Tipo} & \textbf{Contenuto} \\ \hline \hline - \type{caddr\_t} & Core address.\\ - \type{clock\_t} & Contatore del \textit{process time} (vedi + \typed{caddr\_t} & Core address.\\ + \typed{clock\_t} & Contatore del \textit{process time} (vedi sez.~\ref{sec:sys_cpu_times}.\\ - \type{dev\_t} & Numero di dispositivo (vedi sez.~\ref{sec:file_mknod}).\\ - \type{gid\_t} & Identificatore di un gruppo (vedi + \typed{dev\_t} & Numero di dispositivo (vedi sez.~\ref{sec:file_mknod}).\\ + \typed{gid\_t} & Identificatore di un gruppo (vedi sez.~\ref{sec:proc_access_id}).\\ - \type{ino\_t} & Numero di \textit{inode} + \typed{ino\_t} & Numero di \textit{inode} (vedi sez.~\ref{sec:file_vfs_work}).\\ - \type{key\_t} & Chiave per il System V IPC (vedi + \typed{key\_t} & Chiave per il System V IPC (vedi sez.~\ref{sec:ipc_sysv_generic}).\\ - \type{loff\_t} & Posizione corrente in un file.\\ - \type{mode\_t} & Attributi di un file.\\ - \type{nlink\_t} & Contatore dei collegamenti su un file.\\ - \type{off\_t} & Posizione corrente in un file.\\ - \type{pid\_t} & Identificatore di un processo (vedi + \typed{loff\_t} & Posizione corrente in un file.\\ + \typed{mode\_t} & Attributi di un file.\\ + \typed{nlink\_t} & Contatore dei collegamenti su un file.\\ + \typed{off\_t} & Posizione corrente in un file.\\ + \typed{pid\_t} & Identificatore di un processo (vedi sez.~\ref{sec:proc_pid}).\\ - \type{rlim\_t} & Limite sulle risorse.\\ - \type{sigset\_t}& Insieme di segnali (vedi sez.~\ref{sec:sig_sigset}).\\ - \type{size\_t} & Dimensione di un oggetto.\\ - \type{ssize\_t} & Dimensione in numero di byte ritornata dalle funzioni.\\ - \type{ptrdiff\_t}& Differenza fra due puntatori.\\ - \type{time\_t} & Numero di secondi (in \textit{calendar time}, vedi + \typed{rlim\_t} & Limite sulle risorse.\\ + \typed{sigset\_t}& Insieme di segnali (vedi sez.~\ref{sec:sig_sigset}).\\ + \typed{size\_t} & Dimensione di un oggetto.\\ + \typed{ssize\_t} & Dimensione in numero di byte ritornata dalle funzioni.\\ + \typed{ptrdiff\_t}& Differenza fra due puntatori.\\ + \typed{time\_t} & Numero di secondi (in \textit{calendar time}, vedi sez.~\ref{sec:sys_time}).\\ - \type{uid\_t} & Identificatore di un utente (vedi + \typed{uid\_t} & Identificatore di un utente (vedi sez.~\ref{sec:proc_access_id}).\\ \hline \end{tabular} @@ -922,7 +927,7 @@ Per questo motivo tutte le funzioni di libreria di solito non fanno 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} -\headfile{sys/types.h}, in modo da mantenere completamente indipendenti i tipi +\headfiled{sys/types.h}, in modo da mantenere completamente indipendenti i tipi utilizzati dalle funzioni di sistema dai tipi elementari supportati dal compilatore C. @@ -1229,18 +1234,18 @@ Le macro disponibili per controllare l'aderenza ai vari standard messi a disposizione della \acr{glibc}, che rendono disponibili soltanto le funzioni in essi definite, sono illustrate nel seguente elenco: \begin{basedescript}{\desclabelwidth{2.7cm}\desclabelstyle{\nextlinelabel}} -\item[\macro{\_\_STRICT\_ANSI\_\_}] richiede l'aderenza stretta allo standard +\item[\macrod{\_\_STRICT\_ANSI\_\_}] richiede l'aderenza stretta allo standard C ISO; viene automaticamente predefinita qualora si invochi il \texttt{gcc} con le opzione \texttt{-ansi} o \texttt{-std=c99}. -\item[\macro{\_POSIX\_SOURCE}] definendo questa macro (considerata obsoleta) +\item[\macrod{\_POSIX\_SOURCE}] definendo questa macro (considerata obsoleta) si rendono disponibili tutte le funzionalità dello standard POSIX.1 (la versione IEEE Standard 1003.1) insieme a tutte le funzionalità dello standard ISO C. Se viene anche definita con un intero positivo la macro \macro{\_POSIX\_C\_SOURCE} lo stato di questa non viene preso in considerazione. -\item[\macro{\_POSIX\_C\_SOURCE}] definendo questa macro ad un valore intero +\item[\macrod{\_POSIX\_C\_SOURCE}] definendo questa macro ad un valore intero positivo si controlla quale livello delle funzionalità specificate da POSIX viene messa a disposizione; più alto è il valore maggiori sono le funzionalità: @@ -1266,7 +1271,7 @@ in essi definite, sono illustrate nel seguente elenco: \item in futuro valori superiori potranno abilitare ulteriori estensioni. \end{itemize} -\item[\macro{\_BSD\_SOURCE}] definendo questa macro si rendono disponibili le +\item[\macrod{\_BSD\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità derivate da BSD4.3, insieme a quelle previste dagli standard ISO C, POSIX.1 e POSIX.2; alcune delle funzionalità previste da BSD sono però in conflitto con le corrispondenti definite nello standard POSIX.1, in @@ -1292,14 +1297,14 @@ in essi definite, sono illustrate nel seguente elenco: \macro{\_DEFAULT\_SOURCE} che è definita di default, è stata deprecata a partire dalle \acr{glibc} 2.20. -\item[\macro{\_SVID\_SOURCE}] definendo questa macro si rendono disponibili le +\item[\macrod{\_SVID\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità derivate da SVID. Esse comprendono anche quelle definite negli standard ISO C, POSIX.1, POSIX.2, e X/Open (XPG$n$) illustrati in precedenza. Questa macro, essendo ricompresa in \macro{\_DEFAULT\_SOURCE} che è definita di default, è stata deprecata a partire dalle \acr{glibc} 2.20. -\item[\macro{\_DEFAULT\_SOURCE}] questa macro abilita le definizioni +\item[\macrod{\_DEFAULT\_SOURCE}] questa macro abilita le definizioni considerate il \textit{default}, comprese quelle richieste dallo standard POSIX.1-2008, ed è sostanzialente equivalente all'insieme di \macro{\_SVID\_SOURCE}, \macro{\_BSD\_SOURCE} e @@ -1310,7 +1315,7 @@ in essi definite, sono illustrate nel seguente elenco: dalle \acr{glibc} 2.19 e consente di deprecare \macro{\_SVID\_SOURCE} e \macro{\_BSD\_SOURCE}. -\item[\macro{\_XOPEN\_SOURCE}] definendo questa macro si rendono disponibili +\item[\macrod{\_XOPEN\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità descritte nella \textit{X/Open Portability Guide}. Anche queste sono un sovrainsieme di quelle definite negli standard POSIX.1 e POSIX.2 ed in effetti sia \macro{\_POSIX\_SOURCE} che @@ -1332,14 +1337,14 @@ in essi definite, sono illustrate nel seguente elenco: estensioni XSI. \end{itemize} -\item[\macro{\_XOPEN\_SOURCE\_EXTENDED}] definendo questa macro si rendono +\item[\macrod{\_XOPEN\_SOURCE\_EXTENDED}] definendo questa macro si rendono disponibili le ulteriori funzionalità necessarie ad essere conformi al rilascio del marchio \textit{X/Open Unix} corrispondenti allo standard Unix95, vale a dire quelle specificate da SUSv1/XPG4v2. Questa macro viene definita implicitamente tutte le volte che si imposta \macro{\_XOPEN\_SOURCE} ad un valore maggiore o uguale a 500. -\item[\macro{\_ISOC99\_SOURCE}] definendo questa macro si rendono disponibili +\item[\macrod{\_ISOC99\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità previste per la revisione delle librerie standard del C introdotte con lo standard ISO C99. La macro è definita a partire dalla versione 2.1.3 della \acr{glibc}. @@ -1351,13 +1356,13 @@ in essi definite, sono illustrate nel seguente elenco: viene tuttora riconosciuta come equivalente di \macro{\_ISOC99\_SOURCE} per compatibilità. -\item[\macro{\_ISOC11\_SOURCE}] definendo questa macro si rendono disponibili +\item[\macrod{\_ISOC11\_SOURCE}] definendo questa macro si rendono disponibili le funzionalità previste per la revisione delle librerie standard del C introdotte con lo standard ISO C11, e abilita anche quelle previste dagli standard C99 e C95. La macro è definita a partire dalla versione 2.16 della \acr{glibc}. -\item[\macro{\_GNU\_SOURCE}] definendo questa macro si rendono disponibili +\item[\macrod{\_GNU\_SOURCE}] definendo questa macro si rendono disponibili tutte le funzionalità disponibili nei vari standard oltre a varie estensioni specifiche presenti solo nella \acr{glibc} ed in Linux. Gli standard coperti sono: ISO C89, ISO C99, POSIX.1, POSIX.2, BSD, SVID, X/Open, SUS. @@ -1370,7 +1375,7 @@ in essi definite, sono illustrate nel seguente elenco: \macro{\_XOPEN\_SOURCE\_EXTENDED} e \macro{\_XOPEN\_SOURCE} con valore 600 (o 500 per le versioni della \acr{glibc} precedenti la 2.2); oltre a queste vengono pure attivate le ulteriori due macro \macro{\_ATFILE\_SOURCE} e - \macro{\_LARGEFILE64\_SOURCE} che definiscono funzioni previste + \macrod{\_LARGEFILE64\_SOURCE} che definiscono funzioni previste esclusivamente dalla \acr{glibc}. \end{basedescript} @@ -1391,18 +1396,18 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco: \begin{basedescript}{\desclabelwidth{2.7cm}\desclabelstyle{\nextlinelabel}} -\item[\macro{\_LARGEFILE\_SOURCE}] definendo questa macro si rendono +\item[\macrod{\_LARGEFILE\_SOURCE}] definendo questa macro si rendono disponibili alcune funzioni che consentono di superare una inconsistenza presente negli standard con i file di grandi dimensioni, ed in particolare definire le due funzioni \func{fseeko} e \func{ftello} che al contrario delle corrispettive \func{fseek} e \func{ftell} usano il tipo di dato - specifico \ctyp{off\_t} (vedi sez.~\ref{sec:file_io}). + specifico \type{off\_t} (vedi sez.~\ref{sec:file_io}). -\item[\macro{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono +\item[\macrod{\_LARGEFILE64\_SOURCE}] definendo questa macro si rendono disponibili le funzioni di una interfaccia alternativa al supporto di valori 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 + tipi di dato e funzioni (come \typed{off64\_t} al posto di \type{off\_t} o \funcm{lseek64} al posto di \func{lseek}). Le funzioni di questa interfaccia alternativa sono state proposte come una @@ -1414,7 +1419,7 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco: di \texttt{64} consente di usare in maniera trasparente le funzioni dell'interfaccia classica. -\item[\macro{\_FILE\_OFFSET\_BITS}] la definizione di questa macro al valore +\item[\macrod{\_FILE\_OFFSET\_BITS}] la definizione di questa macro al valore di \texttt{64} consente di attivare la conversione automatica di tutti i riferimenti a dati e funzioni a 32 bit nelle funzioni di interfaccia ai file con le equivalenti a 64 bit, senza dover utilizzare esplicitamente @@ -1430,13 +1435,13 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco: dimensioni. Su sistemi a 64 bit invece, dove il problema non sussiste, la macro non ha nessun effetto. -\item[\macro{\_ATFILE\_SOURCE}] definendo questa macro si rendono disponibili +\item[\macrod{\_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 \textit{pathname} relativi con programmi \textit{multi-thread} illustrate in sez.~\ref{sec:file_openat}. -\item[\macro{\_REENTRANT}] definendo questa macro, o la equivalente +\item[\macrod{\_REENTRANT}] definendo questa macro, o la equivalente \macro{\_THREAD\_SAFE} (fornita per compatibilità) si rendono disponibili le versioni rientranti (vedi sez.~\ref{sec:proc_reentrant}) di alcune funzioni, necessarie quando si usano i \textit{thread}. Alcune di queste funzioni @@ -1444,7 +1449,7 @@ una opportuna macro; queste estensioni sono illustrate nel seguente elenco: disponibili soltanto su alcuni sistemi, o specifiche della \acr{glibc}, e possono essere utilizzate una volta definita la macro. -\item[\macro{\_FORTIFY\_SOURCE}] definendo questa macro viene abilitata +\item[\macrod{\_FORTIFY\_SOURCE}] definendo questa macro viene abilitata l'inserimento di alcuni controlli per alcune funzioni di allocazione e manipolazione di memoria e stringhe che consentono di rilevare automaticamente alcuni errori di \textit{buffer overflow} nell'uso delle