Guida alla Programmazione in Linux
Simone Piccardi
Home Stato 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 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.

Notizie 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.