Guida alla Programmazione in Linux
Simone Piccardi
Home Stato Download Versione online Trac
Il progetto GaPiL nasce dalla mia convinzione profonda che la "filosofia" che ispira il software libero si applichi anche ad altri campi che non siano necessariamente quelli della scrittura di programmi per computer. In particolare ritengo che possa assumere una grande rilevanza in ambiti come quelli dell'educazione e della formazione.

Ma se trovare della buona documentazione libera, specie per quanto riguarda i programmi che girano sul sistema GNU/Linux, è ormai relativamente facile, la produzione di buoni testi didattici è ancora molto limitata, soprattutto se li si cercano in lingua italiana.

GaPiL è un tentativo di scrivere un manuale di programmazione di sistema in ambiente Linux, con una particolare attenzione alle caratteristiche specifiche delle interfacce fornite dal kernel. Per questo motivo si parla di Linux e non di GNU/Linux.

Nonostante questa specificità, essendo la gran parte delle funzioni di sistema standardizzate, la guida dovrebbe risultare utile anche facendo riferimenti ad altri sistemi di tipo Unix come BSD, in ogni caso si sono sottolineate esplicitamente le caratteristiche specifiche di Linux.

Benché buona parte della trattazione delle funzioni di libreria sia del tutto identica, facendo riferimento a standard generali come POSIX, si è comunque prestata particolare attenzione alle funzioni delle GNU libc, che sono la versione più usata delle librerie del C, senza dimenticare, ove note, di citare le differenze con possibili alternative come le libc5 o le uclibc.

L'obiettivo resta comunque quello di riuscire a produrre un testo, rilasciato sotto GNU FDL, che possa servire a chi si accosta per la prima volta alla programmazione avanzata e di sistema su un kernel Linux, con la speranza di poter un giorno raggiungere la qualità dei lavori del compianto R. W. Stevens.

Altro materiale Potete trovare altro materiale libero di vario tipo (non necessariamente attinente l'informatica) prodotto da me all'indirizzo: http://firenze.linux.it/~piccardi/pubblicazioni.html

Invece la documentazione tecnica più recente che ho prodotto è pubblicata sul sito di Truelite Srl, ed in particolare sono disponibili una serie di manuali su temi di natura sistemistica a partire da http://labs.truelite.it/truedoc.

Notizie 6 - dicembre - 2008
Aggiornata la versione cartacea acquistabile su lulu.com, all'indirizzo http://stores.lulu.com/piccardi, contiene le ultime novità in particolare riguardo le funzioni delle ACL. Si ricorda che il sovrapprezzo serve a finanziare lo sviluppo del testo; si può sempre scaricare la versione corrente aggiornata e gratuita da questo sito.

5 - gennaio - 2007
Pubblicata una versione stampabile a richiesta su lulu.com, ordinabile all'indirizzo http://stores.lulu.com/piccardi.

1 - giugno - 2006
Nuova revisione con varie aggiunte e correzioni, in occasione della pubblicazione sul DVD di LinuxPro.

11 - marzo - 2005
Modificata la pagina dell'accesso ai sorgenti, non viene più utilizzato ViewCVS ma è stato installato il sistema di tracking trac che oltre alla navigazione dei contenuti consente di tenere sotto controllo le revisioni, e l'evoluzione della guida e di inviare ticket via web.

6 - marzo - 2005
Realizzato un web server elementare a scopo didattico, in vista dell'iniziativa del Lilik su GaPiL.

12 - gennaio - 2005
Completata la sezione sulla gestione della risoluzione degli indirizzi ed iniziata la sezione sulle opzioni dei socket.

19 - luglio - 2004
Completata una prima sezione sui socket UDP ed iniziata una sezione sulle funzioni per la risoluzione degli indirizzi. Inoltre da oggi i sorgenti di Gapil sono accessibili usando Subversion sul sito di Truelite Srl.

3 - marzo - 2004
Ristrutturata la parte sulla programmazione di rete, inserita la sezione sull'I/O multiplexing (completata con esempio di server basato su poll) nella sezione sui socket TCP. Introdotti i nuovi capitoli sugli altri socket, ed iniziata la sezione sui socket UDP.

26 - dicembre - 2003
Inserito esempio di server basato sull'I/O multiplexing. Ristrutturato il capitolo sui file avanzati scorporando in una sezione a parte l'I/O multiplexing, e inserendo alcuni esempi per pselect. Creata una terza parte per le appendici.

8 - novembre - 2003
Corretta tabella sbagliata al capitolo 5, completata la sezione sull'uso dell'I/O multiplexing sul lato client ed iniziata la versione server, inserita la trattazione della funzione shutdown.

21 - settembre - 2003
Completato il capitolo sui socket elementari, e corretti numerosi errori. Revisione della sezione sull'I/O multiplexing nel capitolo sui file avanzati in vista dell'uso nel capitolo sui socket TCP avanzati.

6 - aprile - 2003
Grazie all'incredibile lavoro di Mirko Maischberger abbiamo una favolosa versione in HTML, che collego direttamente dalla sua home page. Non finirò mai di ringraziarlo per aver domato htlatex fino a produrre la prima versione di GaPiL realmente consuntabile on line. Con l'occasione è stata completamente revisionata la parte di introduzione alle reti.

10 - marzo - 2003
Completata la memoria condivisa POSIX, introdotte le relative funzioni di interfaccia, revisionati ed ampliati i capitoli sull'introduzione alla rete ed ai socket.

20 - febbraio - 2003
Completata la sezione sulle alternative al SysV IPC, introdotte le code di messaggi POSIX, un esempio di uso della memoria condivisa, e parecchie revisioni generali.

10 - dicembre - 2002
Completata la sezione sul file locking, inserita una nuova sezione sulle alternative al SysV IPC, estesa la parte sulla memoria condivisa, fatta una revisione generale degli indici.

26 - ottobre - 2002
Revisione di terminali, code di messaggi e advisory file locking. Aggiunta la struttura dei semafori SysV IPC, del file locking in stile POSIX, ed un contributo di Daniele Masini sull'allocazione della memoria.

18 - ottobre - 2002
Aggiunte: trattazione elementare dei terminali, dei semafori di System V IPC, del file locking in stile BSD.

24 - settembre - 2002
Spostato tutto sul CVS pubblico del FLUG che consente l'accesso anonimo. Aggiunta una trattazione preliminare delle code di messaggi di System V IPC e del controllo di sessione.

20 - agosto - 2002
Completata la stesura preliminare del memory mapped I/O, inserito un esempio di server basato sulle FIFO, completata la versione iniziale dell'introduzione al System V IPC.

7 - agosto - 2002
Completata la prima stesura delle sezioni relative all'I/O asincrono ed ai segnali real-time, iniziata la stesura della sezione sul memory mapped I/O.

22 - luglio - 2002
Iniziata la stesura del capitolo sull'I/O avanzato. Completata la sezione su pipe e FIFO (in versione preliminare) inziate le sezioni su I/O asincrono ed una sezione aggiuntiva sui segnali real-time nel relativo capitolo.

3 - luglio - 2002
Prima versione del sito, con rilascio della prima versione di GaPiL in un HTML passabile.
Sono in versione preliminare, ma ricontrollati e di qualità accettabile, i capitoli dal primo al nono: introduzione, gestione dei processi, interfacce di base per i file e per il controllo dei parametri del sistema, gestione dei segnali. Sono da ricontrollare, ma di qualità decente, i capitoli dal tredicesimo al sedicesimo: reti e socket elementari (il sedicesimo capitolo è incompleto). Sono in corso di stesura, e pertanto di qualità non classificabile (che può oscillare fra la bozza non rivista ed il semplice elenco degli argomenti) gli altri capitoli.