1 <?xml version="1.0" encoding="iso-8859-1"?>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4 "DTD/xhtml1-strict.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="it">
8 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
9 <title>GaPiL -- Guida alla Programmazione in Linux</title>
10 <meta name="author" content="Simone Piccardi" />
11 <meta name="title" content="Guida alla Programmazione in Linux" />
12 <meta name="description" content="Un manuale di programmazione avanzata in
14 <meta name="keywords" content="programmazione, programmazione linux,
15 POSIX, programmazione avanzata "/>
16 <style type="text/css">
18 a {text-decoration: none;}
19 td {font-family: sans-serif}
23 <body link="mediumslateblue" vlink="mediumblue" alink="red" bgcolor="white">
25 <table cellspacing="0" cellpadding="0" border="0" width="800">
28 <td width="170" align="center">
29 <img src="gapil.png" width="160" border="0" />
31 <td valign="bottom" align="left" bgcolor="white">
32 <table cellspacing="0">
35 <font face="sans-serif" size="+4"
36 color="darkred" style="font-size: 22pt">
37 <b>Guida alla Programmazione in Linux</b>
39 <font color="midnightblue">
40 <b>Simone Piccardi</b>
51 <table width="790" cellspacing="0" cellpadding="3" border="0">
54 <td width="164" align="center" >
56 <td align="center" bgcolor="#dddddd">
57 <a target="_parent" href="index.html">
58 <font face="sans-serif">
63 <td align="center" bgcolor="#dddddd">
64 <a target="_parent" href="stato.html">
65 <font face="sans-serif">
70 <td align="center" bgcolor="#dddddd">
71 <a target="_parent" href="download.html">
72 <font face="sans-serif">
77 <td align="center" bgcolor="#dddddd">
79 href="http://www.lilik.it/~mirko/gapil/gapil.html">
80 <font face="sans-serif" color="darkred">
81 <b>Versione online</b>
85 <td align="center" bgcolor="#dddddd">
87 href="http://gapil.truelite.it/sources">
88 <font face="sans-serif">
98 <table width="1000" cellspacing="10" cellpadding="10" border="0">
101 <td width="130" valign="top"><b>
102 <font color="#0000aa">
107 <td bgcolor="lightblue" width="600">
109 <b>GaPiL</b> nasce dalla mia convinzione profonda che la <a
110 href="http://www.gnu.org/philosophy/philosophy.it.html">
111 "filosofia"</a> che ispira il software libero si applichi anche
112 ad altri campi che non siano necessariamente quelli della
113 scrittura di programmi per computer. In particolare ritengo che
114 possa assumere una grande rilevanza in ambiti come quelli
115 dell'educazione e della formazione.
117 <p> Ma se trovare della buona documentazione libera, specie per
118 quanto riguarda i programmi che girano sul sistema GNU/Linux,
119 è ormai relativamente facile, la produzione di buoni testi
120 didattici è ancora molto limitata, soprattutto se li si cercano
123 <p> <b>GaPiL</b> è un tentativo di scrivere un manuale di
124 programmazione di sistema in ambiente Linux, con una
125 particolare attenzione alle caratteristiche specifiche delle
126 interfacce fornite dal kernel. Benché buona parte della
127 trattazione delle funzioni di libreria faccia riferimento a
128 standard generali come POSIX, si è comunque data una
129 attenzione particolare alle GNU libc, che sono la versione più
130 usata delle librerie del C, senza dimenticare, ove note, di
131 citare le differenze con possibili alternative come le libc5 o
135 L'obiettivo resta comunque quello di riuscire a produrre un
136 testo, rilasciato sotto <a
137 href="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
138 possa servire a chi si accosta per la prima volta alla
139 programmazione avanzata e di sistema su un kernel Linux, con
140 la speranza di poter un giorno raggiungere la qualità dei
141 lavori del compianto R. W. Stevens.
146 <script type="text/javascript">
148 google_ad_client = "pub-8183995981511372";
149 /* GapilHomeAd160x600 */
150 google_ad_slot = "2733882512";
151 google_ad_width = 160;
152 google_ad_height = 600;
155 <script type="text/javascript"
156 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
162 <td width="130" valign="top">
164 <font color="#0000aa">
169 <td bgcolor="lightblue">
171 Potete trovare altro materiale libero di vario tipo (non
172 necessariamente attinente l'informatica) prodotto da me
174 href="http://firenze.linux.it/~piccardi/pubblicazioni.html">
175 http://firenze.linux.it/~piccardi/pubblicazioni.html</a>
177 Invece la documentazione tecnica più recente che ho prodotto è
178 pubblicata sul sito di <a href="http://www.truelite.it">Truelite
179 Srl</a>, ed in particolare sono disponibili una serie di manuali
180 su temi di natura sistemistica a partire da <a href=
181 "http://labs.truelite.it/truedoc">
182 http://labs.truelite.it/truedoc</a>.
187 <td width="130" valign="top">
189 <font color="#0000aa">
194 <td bgcolor="lightblue">
195 <b>6 - dicembre - 2008</b> <br/> Aggiornata la versione cartacea
196 acquistabile su lulu.com, all'indirizzo
197 <a href="http://stores.lulu.com/piccardi">
198 http://stores.lulu.com/piccardi</a>, contiene le ultime
199 novità in particolare riguardo le funzioni delle ACL. Si
200 ricorda che il sovrapprezzo serve a finanziare lo sviluppo del
201 testo; si può sempre scaricare la versione corrente aggiornata
202 e gratuita da questo sito.
204 <b>5 - gennaio - 2007</b> <br/> Pubblicata una versione
205 stampabile a richiesta su lulu.com, ordinabile all'indirizzo
206 <a href="http://stores.lulu.com/piccardi">
207 http://stores.lulu.com/piccardi</a>.
209 <b>1 - giugno - 2006</b> <br/> Nuova revisione con varie aggiunte
210 e correzioni, in occasione della pubblicazione sul DVD di
213 <b>11 - marzo - 2005</b> <br/> Modificata la pagina dell'accesso
214 ai sorgenti, non viene più utilizzato ViewCVS ma è stato
215 installato il sistema di tracking <a
216 href="http://www.edgewall.com/trac/">trac</a> che oltre alla
217 navigazione dei contenuti consente di tenere sotto controllo le
218 revisioni, e l'evoluzione della guida e di inviare ticket via
221 <b>6 - marzo - 2005</b> <br/> Realizzato un web server
222 elementare a scopo didattico, in vista <a href="
223 http://www.lilik.it/page.php?pg=gapil">dell'iniziativa del
226 <b>12 - gennaio - 2005</b> <br/> Completata la sezione sulla
227 gestione della risoluzione degli indirizzi ed iniziata la
228 sezione sulle opzioni dei socket.
230 <b>19 - luglio - 2004</b> <br/> Completata una prima sezione sui
231 socket UDP ed iniziata una sezione sulle funzioni per la
232 risoluzione degli indirizzi. Inoltre da oggi i sorgenti di Gapil
233 sono accessibili usando <a href="http://subversion.tigris.org/">
234 Subversion</a> sul sito di <a
235 href="http://www.truelite.it">Truelite Srl</a>.
237 <b>3 - marzo - 2004</b> <br/> Ristrutturata la parte sulla
238 programmazione di rete, inserita la sezione sull'I/O
239 multiplexing (completata con esempio di server basato su
240 <b>poll</b>) nella sezione sui socket TCP. Introdotti i nuovi
241 capitoli sugli altri socket, ed iniziata la sezione sui socket
244 <b>26 - dicembre - 2003</b> <br/> Inserito esempio di server
245 basato sull'I/O multiplexing. Ristrutturato il capitolo sui file
246 avanzati scorporando in una sezione a parte l'I/O multiplexing,
247 e inserendo alcuni esempi per <b>pselect</b>. Creata una terza
248 parte per le appendici.
250 <b>8 - novembre - 2003</b> <br/> Corretta tabella sbagliata al
251 capitolo 5, completata la sezione sull'uso dell'I/O multiplexing
252 sul lato client ed iniziata la versione server, inserita la
253 trattazione della funzione shutdown.
256 <b>21 - settembre - 2003</b> <br/> Completato il capitolo sui
257 socket elementari, e corretti numerosi errori. Revisione della
258 sezione sull'I/O multiplexing nel capitolo sui file avanzati in
259 vista dell'uso nel capitolo sui socket TCP avanzati.
262 <b>6 - aprile - 2003</b> <br/> Grazie all'incredibile lavoro di
263 Mirko Maischberger abbiamo una favolosa versione in HTML, che
264 collego direttamente dalla sua home page. Non finirò mai di
265 ringraziarlo per aver domato htlatex fino a produrre la prima
266 versione di GaPiL realmente consuntabile on line. Con
267 l'occasione è stata completamente revisionata la parte di
268 introduzione alle reti.
271 <b>10 - marzo - 2003</b> <br/> Completata la memoria condivisa
272 POSIX, introdotte le relative funzioni di interfaccia,
273 revisionati ed ampliati i capitoli sull'introduzione alla rete
277 <b>20 - febbraio - 2003</b> <br/> Completata la sezione sulle
278 alternative al SysV IPC, introdotte le code di messaggi POSIX,
279 un esempio di uso della memoria condivisa, e parecchie revisioni
283 <b>10 - dicembre - 2002</b> <br/> Completata la sezione sul file
284 locking, inserita una nuova sezione sulle alternative al SysV
285 IPC, estesa la parte sulla memoria condivisa, fatta una
286 revisione generale degli indici.
289 <b>26 - ottobre - 2002</b> <br/> Revisione di terminali, code di
290 messaggi e advisory file locking. Aggiunta la struttura dei
291 semafori SysV IPC, del file locking in stile POSIX, ed un
292 contributo di Daniele Masini sull'allocazione della memoria.
295 <b>18 - ottobre - 2002</b> <br/> Aggiunte: trattazione elementare
296 dei terminali, dei semafori di System V IPC, del file locking in
300 <b>24 - settembre - 2002</b> <br/> Spostato tutto sul CVS
301 pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
302 trattazione preliminare delle code di messaggi di System V IPC e
303 del controllo di sessione.
306 <b>20 - agosto - 2002</b> <br/> Completata la stesura preliminare
307 del memory mapped I/O, inserito un esempio di server basato
308 sulle FIFO, completata la versione iniziale dell'introduzione
312 <b>7 - agosto - 2002</b> <br/> Completata la prima stesura delle
313 sezioni relative all'I/O asincrono ed ai segnali real-time,
314 iniziata la stesura della sezione sul memory mapped I/O.
317 <b>22 - luglio - 2002</b> <br/> Iniziata la stesura del capitolo
318 sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
319 versione preliminare) inziate le sezioni su I/O asincrono ed una
320 sezione aggiuntiva sui segnali real-time nel relativo capitolo.
323 <b>3 - luglio - 2002</b> <br/> Prima versione del sito, con
324 rilascio della prima versione di GaPiL in un HTML passabile.
325 <br/> Sono in versione preliminare, ma ricontrollati e di
326 qualità accettabile, i capitoli dal primo al nono: introduzione,
327 gestione dei processi, interfacce di base per i file e per il
328 controllo dei parametri del sistema, gestione dei segnali. Sono
329 da ricontrollare, ma di qualità decente, i capitoli dal
330 tredicesimo al sedicesimo: reti e socket elementari (il
331 sedicesimo capitolo è incompleto). Sono in corso di stesura, e
332 pertanto di qualità non classificabile (che può oscillare fra la
333 bozza non rivista ed il semplice elenco degli argomenti) gli