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 in ambiente Linux, con una
111 particolare attenzione alle caratteristiche specifiche delle
112 interfacce fornite dal kernel. Benché buona parte della
113 trattazione delle funzioni di libreria faccia riferimento a
114 standard generali come POSIX, si è comunque data una
115 attenzione particolare alle GNU libc, che sono la versione più
116 usata delle librerie del C, senza dimenticare, ove note, di
117 citare le differenze con possibili alternative come le libc5 o
121 L'obiettivo resta comunque quello di riuscire a produrre una
122 testo, rilasciato sotto <A
123 HREF="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
124 possa servire a chi si accosta per la prima volta alla
125 programmazione avanzata e di sistema su un kernel Linux, con
126 la speranza di poter un giorno raggiungere la qualità dei
127 lavori del compianto R. W. Stevens.
132 <td width="130" valign="top">
134 <font color="#0000aa">
139 <td bgcolor="lightblue">
141 GaPiL nasce come libro e come tale la versione di riferimento è
142 quella in PDF, accessibile nella sezione <A href="stampa.html">
143 <font face="sans-serif"> <b>Download</b> </font></A>. Grazie
144 all'opera di Mirko Maischberger abbiamo anche una bellissima
145 versione HTML, accessibile nella sezione <A
146 href="http://www.lilik.it/~mirko/gapil/gapil.html"> <font
147 face="sans-serif"> <b>online</b> </font></A>, finalmente
148 all'altezza della versione stampabile.
153 <td width="130" valign="top">
155 <font color="#0000aa">
160 <td bgcolor="lightblue"> <b>GaPiL</b> è in continua evoluzione ma
161 alcune parti hanno raggiunto una "stabilità" sufficiente (nel
162 senso che le ho riviste, le ritengo abbastanza complete, e non
163 sono stato capace di accorgermi degli errori che ci ho lasciato)
164 altre sono da rivedere, altre sono solo parzialmente accennate. La
165 situazione attuale è la seguente:
166 <table width="600" cellspacing="5">
169 <td valign="top"> <b> Cap. 1 </b> </td>
170 <td valign="top"> Introduzione </td>
171 <td valign="top"> quasi completo e parzialmente revisionato
175 <td valign="top"> <b> Cap. 2-3 </b> </td>
176 <td valign="top"> Gestione dei processi </td>
177 <td valign="top"> quasi completi e parzialmente revisionati
181 <td valign="top"> <b> Cap. 4-7 </b> </td>
182 <td valign="top"> Gestione base dei file
183 <td valign="top"> quasi completi e parzialmente revisionati
187 <td valign="top"> <b> Cap. 8 </b> </td>
188 <td valign="top"> Sistema, parametri, errori</td>
189 <td valign="top"> quasi completo, da revisionare</td>
192 <td valign="top"> <b> Cap. 9 </b> </td>
193 <td valign="top"> Segnali</td>
194 <td valign="top"> quasi completo, da revisionare </td>
197 <td valign="top"> <b> Cap. 10 </b> </td>
198 <td valign="top"> Sessioni e terminali</td>
199 <td valign="top"> Sessioni complete, da revisionare,
200 terminali quasi completi. </td>
203 <td valign="top"> <b> Cap. 11 </b> </td>
204 <td valign="top"> Gestione avanzata dei file</td>
206 I/O non bloccante, asincrono, memory
207 mapped completo, da revisionare, file locking
208 completo, da revisionare.
212 <td valign="top"> <b> Cap. 12 </b> </td>
213 <td valign="top"> IPC</td>
214 <td valign="top"> Pipe, fifo e code, semafori,
215 memoria condivisa, tecniche alternative completi, da
216 revisionare, IPC POSIX quasi completo.
219 <td valign="top"> <b> Cap. 13-14 </b> </td>
220 <td valign="top"> Introduzione alla rete</td>
221 <td valign="top"> completi, da revisionare </td>
224 <td valign="top"> <b> Cap. 15-16 </b> </td>
225 <td valign="top"> Socket TCP elementari</td>
226 <td valign="top"> Caratteristiche base quasi complete,
227 esempio elementare da concludere </td>
232 <b> Versione corrente:</b> 473 pagine.
237 <td width="130" valign="top">
239 <font color="#0000aa">
244 <td bgcolor="lightblue">
246 <b>6 - aprile - 2003</b> <br> Grazie all'incredibile lavoro di
247 Mirko Maischberger abbiamo una favolosa versione in HTML, che
248 collego direttamente dalla sua home page. Non finirò mai di
249 ringraziarlo per aver domato htlatex fino a produrre la prima
250 versione di GaPiL realmente consuntabile on line. Con
251 l'occasione è stata completamente revisionata la parte di
252 introduzione alle reti.
255 <b>10 - marzo - 2003</b> <br> Completata la memoria condivisa
256 POSIX, introdotte le relative funzioni di interfaccia,
257 revisionati ed ampliati i capitoli sull'introduzione alla rete
260 <b>20 - febbraio - 2003</b> <br> Completata la sezione sulle
261 alternative al SysV IPC, introdotte le code di messaggi POSIX,
262 un esempio di uso della memoria condivisa, e parecchie revisioni
266 <b>10 - dicembre - 2002</b> <br> Completata la sezione sul file
267 locking, inserita una nuova sezione sulle alternative al SysV
268 IPC, estesa la parte sulla memoria condivisa, fatta una
269 revisione generale degli indici.
272 <b>26 - ottobre - 2002</b> <br> Revisione di terminali, code di
273 messaggi e advisory file locking. Aggiunta la struttura dei
274 semafori SysV IPC, del file locking in stile POSIX, ed un
275 contributo di Daniele Masini sull'allocazione della memoria.
278 <b>18 - ottobre - 2002</b> <br> Aggiunte: trattazione elementare
279 dei terminali, dei semafori di System V IPC, del file locking in
283 <b>24 - settembre - 2002</b> <br> Spostato tutto sul CVS
284 pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
285 trattazione preliminare delle code di messaggi di System V IPC e
286 del controllo di sessione.
289 <b>20 - agosto - 2002</b> <br> Completata la stesura preliminare
290 del memory mapped I/O, inserito un esempio di server basato
291 sulle FIFO, completata la versione iniziale dell'introduzione
295 <b>7 - agosto - 2002</b> <br> Completata la prima stesura delle
296 sezioni relative all'I/O asincrono ed ai segnali real-time,
297 iniziata la stesura della sezione sul memory mapped I/O.
300 <b>22 - luglio - 2002</b> <br> Iniziata la stesura del capitolo
301 sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
302 versione preliminare) inziate le sezioni su I/O asincrono ed una
303 sezione aggiuntiva sui segnali real-time nel relativo capitolo.
306 <b>3 - luglio - 2002</b> <br> Prima versione del sito, con
307 rilascio della prima versione di GaPiL in un HTML passabile.
309 Sono in versione preliminare, ma ricontrollati e di qualità
310 accettabile, i capitoli dal primo al nono: introduzione,
311 gestione dei processi, interfacce di base per i file e per il
312 controllo dei parametri del sistema, gestione dei segnali. Sono
313 da ricontrollare, ma di qualità decente, i capitoli dal
314 tredicesimo al sedicesimo: reti e socket elementari (il
315 sedicesimo capitolo è incompleto). Sono in corso di stesura, e
316 pertanto di qualità non classificabile (che può oscillare fra la
317 bozza non rivista ed il semplice elenco degli argomenti) gli