+\secref{sec:file_access_control}) è regolato da questo meccanismo di
+identificazione.
+
+Infine in ogni unix è presente un utente speciale privilegiato, il cosiddetto
+\textit{superuser}, il cui username è di norma \textit{root}, ed il cui
+\acr{uid} è zero. Esso identifica l'amministratore del sistema, che deve
+essere in grado di fare qualunque operazione; per l'utente \textit{root}
+infatti i meccanismi di controllo descritti in precedenza sono
+disattivati\footnote{i controlli infatti vengono sempre eseguiti da un codice
+ del tipo \texttt{if (uid) \{ ... \}}}.
+
+
+\section{Gli standard di unix e GNU/Linux}
+\label{sec:intro_standard}
+
+In questa sezione faremo una breve panoramica relativa ai vari standard che
+nel tempo sono stati formalizzati da enti, associazioni, consorzi e
+organizzazioni varie al riguardo del sistema o alle caratteristiche che si
+sono stabilite come standard di fatto in quanto facenti parte di alcune
+implementazioni molto diffuse come BSD o SVr4.
+
+Ovviamente prenderemo in considerazione solo gli aspetti riguardanti
+interfacce di programmazione e le altre caratteristiche di un sistema
+unix-like ed in particolare a come e in che modo essi sono supportati da
+GNU/Linux (sia per quanto riguarda il kernel che le \acr{glibc}).
+
+
+\subsection{Lo standard ANSI C}
+\label{sec:intro_ansiC}
+
+Lo standard ANSI C è stato definito nel 1989 dall'\textit{American National
+ Standard Institute}, come standard del linguaggio C ed è stato
+successivamente adottatto dalla \textit{International Standard Organisation}
+come standard internazionale con la sigla ISO/IEC 9899:1990, e va anche sotto
+il nome di standard ISO C.
+
+Scopo dello standard è quello di garantire la portabilità dei programmi C fra
+sistemi operativi diversi, ma oltre alla sintassi e alla semantica del
+linguaggio C (operatori, parole chiave, tipi di dati) lo standard prevede
+anche una libreria di funzioni che devono poter essere implementate su
+qualunque sistema operativo.
+
+Per questo motivo, anche se lo standard non ha alcun riferimento ad un sistema
+di tipo unix, GNU/Linux (per essere precisi le glibc), come molti unix
+moderni, provvede la compatibilità con questo standard, fornendo le funzioni
+di libreria da esso previste. Queste sono dichiarate in quindici header files
+(anch'essi provvisti dalla \acr{glibc}), uno per ciascuna delle quindici aree
+in cui è stata suddivisa una libreria standard. In \ntab\ si sono riportati
+questi header, insieme a quelli definiti negli altri standard descritti nelle
+sezioni successive.
+
+In realtà \acr{glibc} ed i relativi header file definiscono un insieme di
+funzionalità in cui sono incluse come sottoinsieme anche quelle previste dallo
+standard ANSI C. È possibile ottenere una conformità stretta allo standard
+(scartando le funzionalità adizionali) usando il \cmd{gcc} con l'opzione
+\cmd{-ansi}. Questa opzione istruisce il compilatore a definire nei vari
+header file soltanto le funzionalità previste dallo standard ANSI C e a non
+usare le varie estensioni al linguaggio e al preprocessore da esso supportate.
+
+
+\subsection{Lo standard IEEE -- POSIX}
+\label{sec:intro_posix}
+
+Uno standard più attinente al sistema nel suo complesso (e che concerne sia il
+kernel che le librerie e` lo standard POSIX. Esso prende origine dallo
+standard ANSI C, che contiene come sottoinsieme, prevedendo ulteriori capacità
+per le funzioni in esso definite, ed aggiungendone di nuove. Le estensioni
+principali sono
+
+In realtà POSIX è una famiglia di standard diversi, il cui nome, suggerito da
+Richard Stallman, sta per \textit{Portable Operating System Interface}, ma la
+X finale denuncia la sua stretta relazione con i sistemi unix. Esso nasce dal
+lavoro dell'IEEE (\textit{Institute of Electrical and Electronics Engeneers})
+che ne produsse una prima versione, nota come IEEE 1003.1-1988, mirante a
+standardizzare l'interfaccia con il sistema operativo.
+
+Ma gli standard POSIX non si limitano alla standardizzazione delle funzioni di
+libreria, e in seguito sono stati prodotti anche altri standard per la shell e
+le utilities di sistema (1003.2), per le estensioni realtime e per i thread
+(1003.1d e 1003.1c) e vari altri.
+
+Benché lo standard POSIX sia basato sui sistemi unix esso definisce comunque
+una interfaccia e non fa riferimento ad una specifica implementazione (ad
+esempio esiste anche una implementazione di questo standard pure sotto Windows
+NT). Lo standard si è evoluto nel tempo ed una versione più aggiornata (quella
+che viene normalmente denominata POSIX.1) è stata rilasciata come standard
+internazionale con la sigla ISO/IEC 9945-1:1996.
+
+Le \acr{glibc} implementano tutte le funzioni definite nello standard POSIX.1,
+e Linux;
+
+
+\subsection{Lo standard X/Open -- XPG3}
+\label{sec:intro_xopen}
+
+Il consorzio X/Open nacque nel 1984 come consorzio di venditori di sistemi
+unix per giungere ad una armonizzazione dele varie implementazioni di unix.
+Per far questo iniziò a pubblicare una serie di documentazioni e specifiche
+sotto il nome di \textit{X/Open Portability Guide} (che chiameremo XPGn).
+
+
+Nel 1989 produsse una terza versione della sua guida particolarmente
+voluminosa (la \textit{X/Open Portability Guide, Issue 3}), che venne presa
+come riferimento da vari produttori, e al cui interno definiva una ulteriore
+standardizzazione dell'interfaccia ad un sistema unix.
+
+Questo standard, detto anche XPG3 dal nome della suddetta guida, è sempre
+basato sullo standard POSIX.1, ma prevede una serie di funzionalità aggiuntive
+fra cui le specifiche delle API per l'interfaccia grafica (X11).
+
+Nel 1992 lo standard venne rivisto con una nuova versione della guida (XPG4)
+che aggiungeva l'interfaccia XTI (\textit{X transport Interface}) mirante a
+soppiantare (senza molto successo) quella l'interfaccia dei socket derivata da
+BSD.
+
+
+\subsection{Gli standard UNIX -- Open Group}
+\label{sec:intro_opengroup}
+
+Nel 1993 il marchi Unix passò di proprietà dalla Novell (che a sua volta lo
+aveva comprato dalla AT\&T) al consorzio X/Open, che iniziò a pubblicare le
+sue specifiche sotto il nome di \textit{Single UNIX Specification},
+
+
+
+
+
+\subsection{Il comportamento standard del \cmd{gcc}}
+\label{sec:intro_gcc_behaviuor}
+
+
+
+
+
+\subsection{Prototipi e puntatori}
+\label{sec:intro_function}
+
+
+\subsection{Tipi di dati primitivi}
+\label{sec:intro_data_types}
+
+