X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=intro.tex;fp=intro.tex;h=2157e74a0187a4c502432d003081b22284ffaa04;hp=f18cc3a3018d2138fe714ebfbfea38e83f6ae28c;hb=04a547df13e4c672d95e1060e1ada9ae2e1fcb2f;hpb=4d46f47e3a0e08440812b334f79489d92814e6d2 diff --git a/intro.tex b/intro.tex index f18cc3a..2157e74 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 @@ -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. @@ -1391,14 +1396,14 @@ 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}). -\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 @@ -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