\section{Gli standard di unix e GNU/Linux}
\label{sec:intro_standard}
-In questa sezione prenderemo faremo una breve panoramica yrelativi ai vari
-standard che nel tempo sono stati formalizzati da enti, associazioni, e
-organizzazioni varie riguardanti interfacce di programmazioni e
-caratteristiche di un sistema unix-like.
+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.
+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
anche una libreria di funzioni che devono poter essere implementate su
qualunque sistema operativo.
-Linux, 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, uno per ciascuna delle quindici aree in cui è stata
-suddivisa la libreria. In \ntab\ si sono riportati questi header, insieme a
-quelli definiti negli altri standard descritti nelle sezioni successive.
+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}
-In realtà POSIX è una famiglia di standard diversi, il nome, suggerito da
+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 ha prodotto una prima versione, nota come IEEE 1003.1-1988, mirante a
+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
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:1990.
+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}
+\subsection{Il comportamento standard del \cmd{gcc}}
+\label{sec:intro_gcc_behaviuor}
+
+
+
+
+
\subsection{Prototipi e puntatori}
\label{sec:intro_function}
\label{sec:intro_data_types}
+
Questo progetto mira alla stesura di un libro il più completo e chiaro
possibile sulla programmazione in GNU/Linux (che da qui in avanti spesso
-chiameremo semplicemante Linux per brevità). Ovviamente essendo i concetti in
+chiameremo semplicemente Linux per brevità). Ovviamente essendo i concetti in
gran parte gli stessi, esso dovrebbe restare valido anche per la
programmazione in ambito Unix generico, pur restando l'intenzione di
approfondire in maniera specifica le caratteristiche peculiari di GNU/Linux.
di realizzazione aperta che permetta di accogliere i contributi di chiunque
sia interessato.
-Dato che lo scopo del progetto è la produzione di un libro si è scelto di
-usare Latex come "ambiente di sviluppo" del medesimo, sia per l'impareggiabile
-qualità tipografica ottenibile, che per la congruenza dello strumento tanto sul
-piano pratico quanto su quello filosofico.
+Dato che sia il kernel che tutte le librerie fondamentali di GNU/Linux sono
+scritte in C, questo sarà il linguaggio di riferimento del testo. In
+particolare il compilatore usato per provare tutti i programmi e gli esempi
+descritti nel testo è lo GNU GCC.
+
+Infine, dato che lo scopo del progetto è la produzione di un libro, si è
+scelto di usare Latex come "ambiente di sviluppo" del medesimo, sia per
+l'impareggiabile qualità tipografica ottenibile, che per la congruenza dello
+strumento, tanto sul piano pratico, quanto su quello filosofico.
Il testo sarà, almeno inizialmente, in italiano.