3 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
4 <TITLE>GaPiL -- Guida alla Programmazione in Linux</TITLE>
5 <META name="author" content="Simone Piccardi">
6 <META name="title" content="Guida alla Programmazione in Linux">
7 <META name="description" content="Un manuale di programmazione avanzata in
9 <META name="keywords" content="programmazione, programmazione linux,
10 POSIX, programmazione avanzata ">
11 <style type="text/css">
13 a {text-decoration: none;}
14 td {font-family: sans-serif}
18 <BODY link="mediumslateblue" vlink="mediumblue" alink="red" bgcolor="white">
20 <table cellspacing=0 cellpadding=0 border=0 width=800>
23 <td width="170" align=center>
24 <img src="gapil.png" width="160" border=0>
26 <td valign=bottom align=left bgcolor="white">
30 <font face="sans-serif" size="+4"
31 color="darkred" style="font-size: 22pt">
32 <b>Guida alla Programmazione in Linux</b>
34 <font color="midnightblue">
35 <b>Simone Piccardi</b>
45 <table width="790" cellspacing="0" cellpadding="3" border="0">
47 <td width=164 align="center" >
49 <td align="center" bgcolor="#dddddd">
50 <A target="_parent" HREF="index.html">
51 <font face="sans-serif">
56 <td align="center" bgcolor="#dddddd">
57 <A target="_parent" href="stampa.html">
58 <font face="sans-serif">
63 <td align="center" bgcolor="#dddddd">
65 HREF="http://www.lilik.it/~mirko/gapil/gapil.html">
66 <font face="sans-serif" color="darkred">
67 <b>Versione online</b>
71 <td align="center" bgcolor="#dddddd">
73 HREF="http://cvs.firenze.linux.it/cgi-bin/viewcvs.cgi/gapil/?cvsroot=Misc">
74 <font face="sans-serif">
84 <table width="800" cellspacing="10" cellpadding="10" border="0">
87 <td width="130" valign="top"><b>
88 <font color="#0000aa">
93 <td bgcolor="lightblue">
95 <p> <b>GaPiL</b> nasce dalla mia convinzione profonda che la <A
96 HREF="http://www.gnu.org/philosophy/philosophy.it.html">
97 "filosofia"</a> che ispira il software libero si applichi
98 anche ad altri campi che non siano necessariamente quelli
99 della scrittura di programmi per computer. In particolare
100 ritengo che possa assumere una grande rilevanza in ambiti come
101 quelli dell'educazione e della formazione.
103 <p> Ma se trovare della buona documentazione libera, specie per
104 quanto riguarda i programmi che girano sul sistema GNU/Linux,
105 è ormai relativamente facile, la produzione di buoni testi
106 didattici è ancora molto limitata, soprattutto se li si cercano
109 <p> <b>GaPiL</b> è un tentativo di scrivere un manuale di
110 programmazione di sistema per Linux con un'occhio particolare
111 per le GNU libc, che sono la versione più diffusa delle
112 librerie di sistema. L'obiettivo è quello di riuscire a
113 produrre una testo, rilasciato sotto <A
114 HREF="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
115 possa servire a chi si accosta per la prima volta alla
116 programmazione avanzata e di sistema in Linux, con la speranza
117 di poter un giorno raggiungere la qualità dei testi del
118 compianto R. W. Stevens.
123 <td width="130" valign="top">
125 <font color="#0000aa">
130 <td bgcolor="lightblue">
132 GaPiL nasce come libro e come tale la versione di riferimento è
133 quella in PDF, accessibile nella sezione <A href="stampa.html">
134 <font face="sans-serif"> <b>Download</b> </font></A>. Grazie
135 all'opera di Mirko Maischberger abbiamo anche una bellissima
136 versione HTML, accessibile nella sezione <A
137 href="http://www.lilik.it/~mirko/gapil/gapil.html"> <font
138 face="sans-serif"> <b>On Line</b> </font></A>, finalemente
139 all'altezza della versione stampabile.
144 <td width="130" valign="top">
146 <font color="#0000aa">
151 <td bgcolor="lightblue"> <b>GaPiL</b> è in continua evoluzione ma
152 alcune parti hanno raggiunto una "stabilità" sufficiente (nel
153 senso che le ho riviste, le ritengo abbastanza complete, e non
154 sono stato capace di accorgermi degli errori che ci ho lasciato)
155 altre sono da rivedere, altre sono solo parzialmente accennate. La
156 situazione attuale è la seguente:
157 <table width="600" cellspacing="5">
160 <td valign="top"> <b> Cap. 1 </b> </td>
161 <td valign="top"> Introduzione </td>
162 <td valign="top"> quasi completo e parzialmente revisionato
166 <td valign="top"> <b> Cap. 2-3 </b> </td>
167 <td valign="top"> Gestione dei processi </td>
168 <td valign="top"> quasi completi e parzialmente revisionati
172 <td valign="top"> <b> Cap. 4-7 </b> </td>
173 <td valign="top"> Gestione base dei file
174 <td valign="top"> quasi completi e parzialmente revisionati
178 <td valign="top"> <b> Cap. 8 </b> </td>
179 <td valign="top"> Sistema, parametri, errori</td>
180 <td valign="top"> quasi completo, da revisionare</td>
183 <td valign="top"> <b> Cap. 9 </b> </td>
184 <td valign="top"> Segnali</td>
185 <td valign="top"> quasi completo, da revisionare </td>
188 <td valign="top"> <b> Cap. 10 </b> </td>
189 <td valign="top"> Sessioni e terminali</td>
190 <td valign="top"> Sessioni complete, da revisionare,
191 terminali quasi completi. </td>
194 <td valign="top"> <b> Cap. 11 </b> </td>
195 <td valign="top"> Gestione avanzata dei file</td>
197 I/O non bloccante, asincrono, memory
198 mapped completo, da revisionare, file locking
199 completo, da revisionare.
203 <td valign="top"> <b> Cap. 12 </b> </td>
204 <td valign="top"> IPC</td>
205 <td valign="top"> Pipe, fifo e code, semafori,
206 memoria condivisa, tecniche alternative completi, da
207 revisionare, IPC POSIX quasi completo.
210 <td valign="top"> <b> Cap. 13-14 </b> </td>
211 <td valign="top"> Introduzione alla rete</td>
212 <td valign="top"> completi, da revisionare </td>
215 <td valign="top"> <b> Cap. 15-16 </b> </td>
216 <td valign="top"> Socket TCP elementari</td>
217 <td valign="top"> Caratteristiche base quasi complete,
218 esempio elementare da concludere </td>
223 <b> Versione corrente:</b> 467 pagine.
228 <td width="130" valign="top">
230 <font color="#0000aa">
235 <td bgcolor="lightblue">
238 <b>6 - aprile - 2003</b> <br> Grazie all'incredibile lavoro di
239 Mirko Maischberger abbiamo una favolosa versione in HTML, che
240 linko direttamente dalla sua home page. Non finirò mai di
241 ringraziarlo per aver domato htlatex fino a produrre la prima
242 versione di GaPiL realmente consuntabile on line. Con
243 l'occasione è stata completamente revisionata la parte di
244 introduzione alle reti.
247 <b>10 - marzo - 2003</b> <br> Completata la memoria condivisa
248 POSIX, introdotte le relative funzioni di interfaccia,
249 revisionati ed ampliati i capitoli sull'introduzione alla rete
252 <b>20 - febbraio - 2003</b> <br> Completata la sezione sulle
253 alternative al SysV IPC, introdotte le code di messaggi POSIX,
254 un esempio di uso della memoria condivisa, e parecchie revisioni
258 <b>10 - dicembre - 2002</b> <br> Completata la sezione sul file
259 locking, inserita una nuova sezione sulle alternative al SysV
260 IPC, estesa la parte sulla memoria condivisa, fatta una
261 revisione generale degli indici.
264 <b>26 - ottobre - 2002</b> <br> Revisione di terminali, code di
265 messaggi e advisory file locking. Aggiunta la struttura dei
266 semafori SysV IPC, del file locking in stile POSIX, ed un
267 contributo di Daniele Masini sull'allocazione della memoria.
270 <b>18 - ottobre - 2002</b> <br> Aggiunte: trattazione elementare
271 dei terminali, dei semafori di System V IPC, del file locking in
275 <b>24 - settembre - 2002</b> <br> Spostato tutto sul CVS
276 pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
277 trattazione preliminare delle code di messaggi di System V IPC e
278 del controllo di sessione.
281 <b>20 - agosto - 2002</b> <br> Completata la stesura preliminare
282 del memory mapped I/O, inserito un esempio di server basato
283 sulle FIFO, completata la versione iniziale dell'introduzione
287 <b>7 - agosto - 2002</b> <br> Completata la prima stesura delle
288 sezioni relative all'I/O asincrono ed ai segnali real-time,
289 iniziata la stesura della sezione sul memory mapped I/O.
292 <b>22 - luglio - 2002</b> <br> Iniziata la stesura del capitolo
293 sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
294 versione preliminare) inziate le sezioni su I/O asincrono ed una
295 sezione aggiuntiva sui segnali real-time nel relativo capitolo.
298 <b>3 - luglio - 2002</b> <br> Prima versione del sito, con
299 rilascio della prima versione di GaPiL in un HTML passabile.
301 Sono in versione preliminare, ma ricontrollati e di qualità
302 accettabile, i capitoli dal primo al nono: introduzione,
303 gestione dei processi, interfacce di base per i file e per il
304 controllo dei parametri del sistema, gestione dei segnali. Sono
305 da ricontrollare, ma di qualità decente, i capitoli dal
306 tredicesimo al sedicesimo: reti e socket elementari (il
307 sedicesimo capitolo è incompleto). Sono in corso di stesura, e
308 pertanto di qualità non classificabile (che può oscillare fra la
309 bozza non rivista ed il semplice elenco degli argomenti) gli