From: Simone Piccardi Date: Wed, 7 Nov 2001 19:07:19 +0000 (+0000) Subject: correzioni e aggiunte alla sezione standard X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=commitdiff_plain;h=a2ac131d4c65656c87e4998f13845cce2213d324;p=gapil.git correzioni e aggiunte alla sezione standard --- diff --git a/gapil.tex b/gapil.tex index 9292659..31347c0 100644 --- a/gapil.tex +++ b/gapil.tex @@ -1,6 +1,6 @@ %% %% GaPiL : Guida alla Programmazione in Linux -%% +%% %% S. Piccardi Oct. 2000 %% %% main.tex: file principale, gli altri vanno inclusi da questo. diff --git a/intro.tex b/intro.tex index cd878bf..43efa10 100644 --- a/intro.tex +++ b/intro.tex @@ -236,10 +236,17 @@ disattivati\footnote{i controlli infatti vengono sempre eseguiti da un codice \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} @@ -247,7 +254,8 @@ caratteristiche di un sistema unix-like. 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 @@ -255,20 +263,38 @@ 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. -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 @@ -281,7 +307,10 @@ 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: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} @@ -319,6 +348,13 @@ 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} @@ -327,3 +363,4 @@ sue specifiche sotto il nome di \textit{Single UNIX Specification}, \label{sec:intro_data_types} + diff --git a/pref.tex b/pref.tex index fb59280..25e07dc 100644 --- a/pref.tex +++ b/pref.tex @@ -29,7 +29,7 @@ per il software libero. 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. @@ -54,10 +54,15 @@ Il progetto prevede il rilascio del testo sotto licenza FDL, ed una modalit 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.