Guida alla Programmazione in Linux
Simone Piccardi
Home Download Versione online CVS
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. Benché buona parte della trattazione delle funzioni di libreria faccia riferimento a standard generali come POSIX, si è comunque data una attenzione particolare alle 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 una 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.

Disponibilità

GaPiL nasce come libro e come tale la versione di riferimento è quella in PDF, accessibile nella sezione Download . Grazie all'opera di Mirko Maischberger abbiamo anche una bellissima versione HTML, accessibile nella sezione online , finalmente all'altezza della versione stampabile.

Stato GaPiL è in continua evoluzione ma alcune parti hanno raggiunto una "stabilità" sufficiente (nel senso che le ho riviste, le ritengo abbastanza complete, e non sono stato capace di accorgermi degli errori che ci ho lasciato) altre sono da rivedere, altre sono solo parzialmente accennate. La situazione attuale è la seguente:
Cap. 1 Introduzione quasi completo e parzialmente revisionato
Cap. 2-3 Gestione dei processi quasi completi e parzialmente revisionati
Cap. 4-7 Gestione base dei file quasi completi e parzialmente revisionati
Cap. 8 Sistema, parametri, errori quasi completo, da revisionare
Cap. 9 Segnali quasi completo, da revisionare
Cap. 10 Sessioni e terminali Sessioni complete, da revisionare, terminali quasi completi.
Cap. 11 Gestione avanzata dei file I/O non bloccante, asincrono, memory mapped completo, da revisionare, file locking completo, da revisionare.
Cap. 12 IPC Pipe, fifo e code, semafori, memoria condivisa, tecniche alternative completi, da revisionare, IPC POSIX quasi completo.
Cap. 13-14 Introduzione alla rete completi, da revisionare
Cap. 15-16 Socket TCP elementari Caratteristiche base quasi complete, esempio elementare da concludere

Versione corrente: 473 pagine.

Notizie

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.