1 <?xml version="1.0" encoding="utf-8"?>
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=utf-8" />
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">
108 <b>GaPiL</b> nasce dalla mia convinzione profonda che la <a
109 href="http://www.gnu.org/philosophy/philosophy.it.html">
110 "filosofia"</a> che ispira il software libero si applichi anche
111 ad altri campi che non siano necessariamente quelli della
112 scrittura di programmi per computer. In particolare ritengo che
113 possa assumere una grande rilevanza in ambiti come quelli
114 dell'educazione e della formazione.
116 <p> Ma se trovare della buona documentazione libera, specie per
117 quanto riguarda i programmi che girano sul sistema GNU/Linux,
118 è ormai relativamente facile, la produzione di buoni testi
119 didattici è ancora molto limitata, soprattutto se li si cercano
122 <p> <b>GaPiL</b> è un tentativo di scrivere un manuale di
123 programmazione di sistema in ambiente Linux, con una
124 particolare attenzione alle caratteristiche specifiche delle
125 interfacce fornite dal kernel. Benché buona parte della
126 trattazione delle funzioni di libreria faccia riferimento a
127 standard generali come POSIX, si è comunque data una
128 attenzione particolare alle GNU libc, che sono la versione più
129 usata delle librerie del C, senza dimenticare, ove note, di
130 citare le differenze con possibili alternative come le libc5 o
134 L'obiettivo resta comunque quello di riuscire a produrre un
135 testo, rilasciato sotto <a
136 href="http://www.gnu.org/copyleft/fdl.html">GNU FDL</a>, che
137 possa servire a chi si accosta per la prima volta alla
138 programmazione avanzata e di sistema su un kernel Linux, con
139 la speranza di poter un giorno raggiungere la qualità dei
140 lavori del compianto R. W. Stevens.
144 <!-- Generated by OpenX 2.8.5 -->
145 <script type='text/javascript' src='http://openx.fountainpen.it/www/delivery/spcjs.php?id=3'></script>
146 <script type='text/javascript'><!--// <![CDATA[
147 /* [id3] gapil.truelite.it - Default */
149 // ]]> --></script><noscript><a target='_blank' href='http://openx.fountainpen.it/www/delivery/ck.php?n=80aa9ec'><img border='0' alt='' src='http://openx.fountainpen.it/www/delivery/avw.php?zoneid=3&n=80aa9ec' /></a></noscript>
153 <td width="130" valign="top">
155 <font color="#0000aa">
160 <td bgcolor="lightblue">
162 Potete trovare altro materiale libero di vario tipo (non
163 necessariamente attinente l'informatica) prodotto da me
165 href="http://firenze.linux.it/~piccardi/pubblicazioni.html">
166 http://firenze.linux.it/~piccardi/pubblicazioni.html</a>
168 Invece la documentazione tecnica più recente che ho prodotto è
169 pubblicata sul sito di <a href="http://www.truelite.it">Truelite
170 Srl</a>, ed in particolare sono disponibili una serie di manuali
171 su temi di natura sistemistica a partire da <a href=
172 "http://labs.truelite.it/truedoc">
173 http://labs.truelite.it/truedoc</a>.
178 <td width="130" valign="top">
180 <font color="#0000aa">
185 <td bgcolor="lightblue">
186 <b>6 - dicembre - 2008</b> <br/> Aggiornata la versione cartacea
187 acquistabile su lulu.com, all'indirizzo
188 <a href="http://stores.lulu.com/piccardi">
189 http://stores.lulu.com/piccardi</a>, contiene le ultime
190 novità in particolare riguardo le funzioni delle ACL. Si
191 ricorda che il sovrapprezzo serve a finanziare lo sviluppo del
192 testo; si può sempre scaricare la versione corrente aggiornata
193 e gratuita da questo sito.
195 <b>5 - gennaio - 2007</b> <br/> Pubblicata una versione
196 stampabile a richiesta su lulu.com, ordinabile all'indirizzo
197 <a href="http://stores.lulu.com/piccardi">
198 http://stores.lulu.com/piccardi</a>.
200 <b>1 - giugno - 2006</b> <br/> Nuova revisione con varie aggiunte
201 e correzioni, in occasione della pubblicazione sul DVD di
204 <b>11 - marzo - 2005</b> <br/> Modificata la pagina dell'accesso
205 ai sorgenti, non viene più utilizzato ViewCVS ma è stato
206 installato il sistema di tracking <a
207 href="http://www.edgewall.com/trac/">trac</a> che oltre alla
208 navigazione dei contenuti consente di tenere sotto controllo le
209 revisioni, e l'evoluzione della guida e di inviare ticket via
212 <b>6 - marzo - 2005</b> <br/> Realizzato un web server
213 elementare a scopo didattico, in vista <a href="
214 http://www.lilik.it/page.php?pg=gapil">dell'iniziativa del
217 <b>12 - gennaio - 2005</b> <br/> Completata la sezione sulla
218 gestione della risoluzione degli indirizzi ed iniziata la
219 sezione sulle opzioni dei socket.
221 <b>19 - luglio - 2004</b> <br/> Completata una prima sezione sui
222 socket UDP ed iniziata una sezione sulle funzioni per la
223 risoluzione degli indirizzi. Inoltre da oggi i sorgenti di Gapil
224 sono accessibili usando <a href="http://subversion.tigris.org/">
225 Subversion</a> sul sito di <a
226 href="http://www.truelite.it">Truelite Srl</a>.
228 <b>3 - marzo - 2004</b> <br/> Ristrutturata la parte sulla
229 programmazione di rete, inserita la sezione sull'I/O
230 multiplexing (completata con esempio di server basato su
231 <b>poll</b>) nella sezione sui socket TCP. Introdotti i nuovi
232 capitoli sugli altri socket, ed iniziata la sezione sui socket
235 <b>26 - dicembre - 2003</b> <br/> Inserito esempio di server
236 basato sull'I/O multiplexing. Ristrutturato il capitolo sui file
237 avanzati scorporando in una sezione a parte l'I/O multiplexing,
238 e inserendo alcuni esempi per <b>pselect</b>. Creata una terza
239 parte per le appendici.
241 <b>8 - novembre - 2003</b> <br/> Corretta tabella sbagliata al
242 capitolo 5, completata la sezione sull'uso dell'I/O multiplexing
243 sul lato client ed iniziata la versione server, inserita la
244 trattazione della funzione shutdown.
247 <b>21 - settembre - 2003</b> <br/> Completato il capitolo sui
248 socket elementari, e corretti numerosi errori. Revisione della
249 sezione sull'I/O multiplexing nel capitolo sui file avanzati in
250 vista dell'uso nel capitolo sui socket TCP avanzati.
253 <b>6 - aprile - 2003</b> <br/> Grazie all'incredibile lavoro di
254 Mirko Maischberger abbiamo una favolosa versione in HTML, che
255 collego direttamente dalla sua home page. Non finirò mai di
256 ringraziarlo per aver domato htlatex fino a produrre la prima
257 versione di GaPiL realmente consuntabile on line. Con
258 l'occasione è stata completamente revisionata la parte di
259 introduzione alle reti.
262 <b>10 - marzo - 2003</b> <br/> Completata la memoria condivisa
263 POSIX, introdotte le relative funzioni di interfaccia,
264 revisionati ed ampliati i capitoli sull'introduzione alla rete
268 <b>20 - febbraio - 2003</b> <br/> Completata la sezione sulle
269 alternative al SysV IPC, introdotte le code di messaggi POSIX,
270 un esempio di uso della memoria condivisa, e parecchie revisioni
274 <b>10 - dicembre - 2002</b> <br/> Completata la sezione sul file
275 locking, inserita una nuova sezione sulle alternative al SysV
276 IPC, estesa la parte sulla memoria condivisa, fatta una
277 revisione generale degli indici.
280 <b>26 - ottobre - 2002</b> <br/> Revisione di terminali, code di
281 messaggi e advisory file locking. Aggiunta la struttura dei
282 semafori SysV IPC, del file locking in stile POSIX, ed un
283 contributo di Daniele Masini sull'allocazione della memoria.
286 <b>18 - ottobre - 2002</b> <br/> Aggiunte: trattazione elementare
287 dei terminali, dei semafori di System V IPC, del file locking in
291 <b>24 - settembre - 2002</b> <br/> Spostato tutto sul CVS
292 pubblico del FLUG che consente l'accesso anonimo. Aggiunta una
293 trattazione preliminare delle code di messaggi di System V IPC e
294 del controllo di sessione.
297 <b>20 - agosto - 2002</b> <br/> Completata la stesura preliminare
298 del memory mapped I/O, inserito un esempio di server basato
299 sulle FIFO, completata la versione iniziale dell'introduzione
303 <b>7 - agosto - 2002</b> <br/> Completata la prima stesura delle
304 sezioni relative all'I/O asincrono ed ai segnali real-time,
305 iniziata la stesura della sezione sul memory mapped I/O.
308 <b>22 - luglio - 2002</b> <br/> Iniziata la stesura del capitolo
309 sull'I/O avanzato. Completata la sezione su pipe e FIFO (in
310 versione preliminare) inziate le sezioni su I/O asincrono ed una
311 sezione aggiuntiva sui segnali real-time nel relativo capitolo.
314 <b>3 - luglio - 2002</b> <br/> Prima versione del sito, con
315 rilascio della prima versione di GaPiL in un HTML passabile.
316 <br/> Sono in versione preliminare, ma ricontrollati e di
317 qualità accettabile, i capitoli dal primo al nono: introduzione,
318 gestione dei processi, interfacce di base per i file e per il
319 controllo dei parametri del sistema, gestione dei segnali. Sono
320 da ricontrollare, ma di qualità decente, i capitoli dal
321 tredicesimo al sedicesimo: reti e socket elementari (il
322 sedicesimo capitolo è incompleto). Sono in corso di stesura, e
323 pertanto di qualità non classificabile (che può oscillare fra la
324 bozza non rivista ed il semplice elenco degli argomenti) gli
333 <script type="text/javascript">
334 var pkBaseURL = (("https:" == document.location.protocol) ? "https://piwik.fountainpen.it/" : "http://piwik.fountainpen.it/");
335 document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
336 </script><script type="text/javascript">
338 var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 3);
339 piwikTracker.trackPageView();
340 piwikTracker.enableLinkTracking();
342 </script><noscript><p><img src="http://piwik.fountainpen.it/piwik.php?idsite=3" style="border:0" alt=""/></p></noscript>
343 <!-- End Piwik Tag -->