Argomento: Linguaggi e Programmazione, Informatica, Linux, Sistemi Operativi, Unix, Open Source, GNU.
di K. Wall, M. Waston, M. Whitis
Il piccolo OS che era
Il piccolo OS che sarà
Una breve storia di Linux
Linux e Unix
Programmare in Linux
Perché programmare in Linux?
Riepilogo
Scelta dell'hardware
Considerazioni per la scelta dell'hardware
Processore/Scheda Madre
I/O Equipaggiato
Processore
BIOS
Memoria
Contenitore e alimentazione
Hardware di interfaccia utente: video, audio, tastiera e mouse
Scheda Video
Monitor
Schede audio
Tastiera e mouse
Dispositivi di comunicazione, porte e bus
Modem
Schede di interfaccia di rete
SCSI
USB e Firewire (IEEE 1394)
Schede seriali (comprese Multiporta)
IRDA
Schede PCMCIA
ISA Plug and Play
Dispositivi di memorizzazione
Disco Rigido
Dischi rimovibili
CD-ROM/DVD
Backup su nastro
Periferiche esterne
Stampante
Scanner
Videocamere digitali
Home Automation
Sistemi completi
Laptop
Installazione
Riepilogo
Caratteristiche di cc di GNU
Una breve lezione
Opzioni comuni della riga di comando
File di libreria e di include
Controllo degli errori e warning
Opzioni di ottimizzazione
Opzioni di debugging
Estensioni C di GNU
Riepilogo
Perché make?
Scrittura dei makefile
Ancora a proposito di regole
Phony (falsi) target
Variabili
Variabili di ambiente, automatiche e predefinite
Regole implicite
Regole di suffisso
Commenti
Opzioni aggiuntive della riga di comando di make
Il debugging di make
Comuni messaggi di errore di make
Destinazioni utili di makefile
Riepilogo
Comprendere autoconf
Costruire configure.in
Composizione del file
Alcune utility di autoconf
Macro interne
Test di programmi alternativi
Test di funzioni di libreria
Test di file di header
Test di strutture
Test per typedef
Test di comportamento del compilatore
Test di servizi di sistema
Test di varianti di Unix
Macro generiche
Uno script di autoconf commentato
Riepilogo
Confronto tra file
Capire il comando cmp
Capire il comando diff
Il formato di uscita normale
Il formato di uscita contesto
Capire il comando diff3
Capire il comando sdiff
Preparazione di patch di codice sorgente
Opzioni della riga di comando di patch
Creazione di una patch
Applicazione della patch
Riepilogo
Terminologia
Utilizzo base di RCS
ci e co
Parole chiave di RCS
Altre parole chiave di RCS
Il comando ident
rcsdiff
Altri comandi RCS
rcsclean
rlog
rcs
rcsmerge
Riepilogo
Introduzione a Emacs
Avvio e chiusura di Emacs
Esplorando Emacs
Inserimento di testo
Cancellazione di testo
Ricerca e sostituzione di testo
Salvataggio e apertura di file
Finestre multiple
Funzioni di supporto alla programmazione
Rientro automatico del codice
Risalto della sintassi
Utilizzo dei commenti
Compilazione con Emacs
Personalizzazione di Emacs
Automatizzazione di Emacs con Emacs Lisp
Riepilogo
Descrittori di file
Chiamate che utilizzano i descrittori di file
La chiamata open()
La chiamata close()
La chiamata read()
La chiamata write()
La chiamata ioctl()
La chiamata fcntl()
La chiamata fsync()
La chiamata ftruncate()
La chiamata lseek()
Le chiamate dup() e dup2()
La chiamata select()
La chiamata fstat()
La chiamata fchown()
La chiamata fchmod()
La chiamata fchdir()
La chiamata flock()
La chiamata pipe()
Tipi di file
File ordinari
L'I/O di nastro
Porte seriali di I/O
Porta stampante
Schede audio
Riepilogo
Funzioni che operano sui file
Apertura e chiusura di file
Funzioni base di lettura e scrittura
Funzioni di stato
Output formattato
Input formattato
Input e output basati su caratteri e su righe
Posizionamento del file
Controllo di buffer
Eliminazione e cambiamento del nome di file
File temporanei
Riepilogo
Attributi
Chiamate di sistema e funzioni libreria
Segnali
Termine di un programma
Allarmi e timer
Parametri di scheduling
Thread
Manipolazione degli attributi
Cancellazione di thread
Mutex
Esempi di programmi
Libreria child
Programma child_demo1.c
Programma child_demo2.c
Programma child_demo3.c
Riepilogo
Informazioni di processo
File cmdline
File environ
Directory fd
File mem
File status
Link simbolico cwd
Link simbolico exe
File maps
Link simbolico root
File statm
Informazioni generali di sistema
File /proc/cmdline
File /proc/cpuinfo
File /proc/devices
File /proc/dma
File /proc/filesystem
File /proc/interrupts
File /proc/ioports
File /proc/kmsg
File /proc/ksyms
File /proc/loadavg
File /proc/locks
File /proc/mdstat
File /proc/meminfo
File /proc/misc
File /proc/modules
File /proc/mounts
File /proc/pci
File /proc/rtc
File /proc/stat
File /proc/uptime
File /proc/version
Sottodirectory /proc/net
Sottodirectory /proc/scsi
Sottodirectory /proc/sys
Librerie e utility
Riepilogo
Una pausa per un breve articolo di fondo
Servizi del linguaggio C
assert()
Utilizzo del preprocessore
Servizi standard di libreria
Comprendere errno
Utlizzo della funzione abort()
Utilizzo della funzione exit()
Utilizzo della funzione atexit()
Utilizzo della funzione strerror()
Utilizzo della funzione perror()
Logging di sistema
Programmi di livello utente
Riepilogo
Riesame della gestione della memoria in C
Utilizzo della funzione malloc()
Utilizzo della funzione calloc()
Utilizzo della funzione realloc()
Utilizzo della funzione free()
Utilizzo della funzione alloca()
I file mappati in memoria
Utilizzo della funzione mmap()
Utilizzo della funzione munmap()
Utilizzo della funzione msync()
Utilizzo della funzione mprotect()
Locking della memoria
Utilizzo della funzione mremap()
Implementazione della cat(1) utilizzando le mappe di memoria
Individuare e risolvere i problemi di memoria
Un bambino difficile
Utilizzo di mpr e check per localizzare i problemi di memoria
Electric Fence
Uso di Lint Brush
Riepilogo
Introduzione all'uso dei pipe
Pipe senza nome
Pipe con nome
Riepilogo
Creazione di un programma di esempio di coda di messaggi
Esecuzione del programma di esempio di coda di messaggi
Riepilogo
Configurare Linux per l'uso di memoria condivisa
Programma di esempio che utilizza la memoria condivisa
Esecuzione del programma di esempio di memoria condivisa
Riepilogo
Un programma di esempio che usa i semafori
Esecuzione del programma di esempio
Riepilogo
Le chiamate di sistema di supporto alla programmazione di socket
socket
bind
listen
connect
recv
send
Esempi di applicazione client/server che usano i socket
Esempio di server
Esempio di client
Esecuzione degli esempi di client e di server
Esecuzione del programma server di esempio utilizzando
un Web browser come client
Un semplice server Web e un programma client di esempio
Implementazione di un semplice Web server
Implementazione di un semplice client Web
Testing del server Web e del client Web
Esecuzione del semplice server Web utilizzando Netscape Navigator
come client
Riepilogo
Un programma di esempio per la trasmissione di dati con UDP
Un programma di esempio per la ricezione di dati UDP
Esecuzione dei programmi UDP di esempio
Riepilogo
Configurazione di Linux per il supporto IP multicast
Programmi di trasmissione IP multicast
Programma per la trasmissione di dati
Programma per l'attesa di trasmissioni
Esecuzione dei programmi di IP multicast
Riepilogo
Programma di esempio di I/O non bloccante
Esecuzione del programma di esempio
Riepilogo
Progetto di classi C++ client/server
Capire il progetto client
Capire il progetto server
Implementazione delle classi C++ client/server
Implementazione del client
Implementazione del server
Test delle classi C++ client/server
Riepilogo
Confronto tra libc5 e libc6
Strumenti di libreria
Comando nm
Comando ar
Comando ldd
Comando ldconfig
Variabili di ambiente e file di configurazione
Scrittura e utilizzo delle librerie statiche
Scrittura e utilizzo delle librerie condivise
Utilizzo di oggetti condivisi caricati dinamicamente
Interfaccia dl
Riepilogo
Tipi di driver
Driver di kernel linkati staticamente
Moduli kernel caricabili
Librerie condivise
Programma senza privilegi di modalità utente
Programmi privilegiati di modalità utente
Demoni
Confronto tra dispositivi a carattere e dispositivi a blocchi
Un hardware dimostrativo
Funzionamento di un motore passo passo
Porta parallela standard o bidirezionale
Configurazione di sviluppo
I/O di porta di basso livello
Attivazione degli interrupt per l'utilizzo dei driver di dispositivo
Accesso alla memoria attraverso il DMA
Semplice driver di test in modalità utente
Debugging dei driver di livello kernel
Metà superiore e metà inferiore
Realizzazione di un driver di kernel
Esame del codice sorgente
Compilazione del driver
Utilizzo del driver di kernel
Sviluppi futuri
Altre sorgenti di informazione
Riepilogo
Interfaccia di terminale
Controllo dei terminali
Funzioni di controllo degli attributi
Funzioni di controllo della velocità
Funzioni di controllo della riga
Funzioni di controllo di processo
Utilizzo dell'interfaccia di terminale
Modifica delle modalità di terminale
Utilizzo di terminfo
Proprietà di terminfo
Utilizzo di terminfo
Lavorare con le capacità terminfo
Riepilogo
Una breve storia di ncurses
Compilazione con ncurses
Debugging dei programmi ncurses
Le finestre
Design della finestra di ncurses
Convenzioni di nome delle funzioni di ncurses
Inizializzazione e terminazione
Inizializzazione di ncurses
Terminazione di ncurses
Un esempio di inizializzazione e terminazione di ncurses
Input e output
Routine di output
Le routine di colore
Gestione delle finestre
Funzioni di utilità
Riepilogo
Concetti base di X
API Xlib
Mapping e unmapping di finestre
Distruzione di finestre
Trattamento degli eventi
Inizializzazione del contesto grafico e dei font
Disegnare in una finestra X
Un programma Xlib di esempio
Toolkit API di X
Iniziare a usare il toolkit di X
Impostazione degli argomenti di widget utilizzando il toolkit di X
Riepilogo
Utilizzo dei widget Athena
Widget Athena Label
Widget Athena Command Button
Widget Athena List
Widget Athena Text
Widget Athena Simple Menu
Utilizzo dei widget Motif
Widget Motif Label
Widget Motif List
Widget di Motif Text
Scrittura di un widget Athena personalizzato
Utilizzo del file fetch_url.c
Utilizzo del file URL.h
Utilizzo del file ULRP.h
Utilizzo del file URL.c
Test dell'URLWidget
Utilizzo di Athena e Motif nei programmi C++
Utilizzo di una libreria di classi per i widget Athena
Classe Component
Classe PanedWindow
Classe Label
Classe Button
Classe Text
Riepilogo
Introduzione a GTK
Gestione degli eventi in GTK
Breve esempio di programma che utilizza GTK
Vari tipi di widget GTK
Widget contenitori GTK
Programma GTK per la visualizzazione dei file XML
Breve introduzione a XML
Expat, l'analizzatore XML di James Clark
Implementazione del programma di visualizzazione XML di GTK
Esecuzione del programma di visualizzazione XML di GTK
Un programma GUI che utilizza il widget Notebook
Implementazione dell'esempio di programma widget Notebook
Implementazione del widget Drawing
Esecuzione dell'esempio di programma GTK widget Notebook
Gestione degli eventi ridefinendo i metodi della classe QWidget
Presentazione della classe QWidget
Implementazione della classe DrawWidget
Test di DrawWidget
Gestione degli eventi con l'utilizzo degli slot e dei segnali Qt
Derivazione della classe StateLCDWidget
Utilizzo dei segnali e degli slot
Esecuzione dell'esempio di programma segnale/slot
Riepilogo
Breve introduzione a Java
Un linguaggio orientato agli oggetti
Uso dei package in Java
Scrittura e lettura dei file con Java
Uso dei thread multipli con Java
Programmazione socket con Java
Creazione di un chat engine utilizzando i socket
Introduzione ad AWT
Scrittura di un programma chat in AWT
Introduzione a JFC
Scrittura di un programma chat in JFC
Uso dei compilatori nativi Java
Riepilogo
OpenGL: un'interfaccia software verso l'hardware grafico
Esempio di programma Orbits
Creazione di una finestra per la grafica di OpenGL e inizializzazione di OpenGL
Creazione di semplici oggetti 3D utilizzando GLUT
Posizionamento di oggetti in uno spazio 3D utilizzando le coordinate X-Y-Z
Rotazione di un oggetto attorno a uno o tutti gli assi x, y e z
Abilitazione all'uso delle proprietà Material
Attivazione dei test di profondità
Gestione degli eventi generati dalla tastiera
Aggiornamento della grafica OpenGL per ottenere effetti di animazione
Listato dell'esempio di programma
Perché bash?
Nozioni fondamentali su bash
Metacaratteri
Espansione delle parentesi graffe
Caratteri speciali
Uso delle variabili bash
Uso degli operatori bash
Operatori stringa
Operatori di confronto contenuto
Controllo di flusso
Esecuzione condizionale: if
Cicli determinati: for
Cicli indeterminati: while e until
Strutture di selezione: case e select
Funzioni shell
Input e output
Redirezionatori I/O
I/O di stringhe
Elaborazione della riga di comando
Processi e controllo lavori
Gestione dei segnali shell
Uso di trap
Riepilogo
Tipi di applicazione
Programmi Setuid
Server di rete (demoni)
Client di rete
Mail User Agents
Programmi CGI
Utility
Applicazioni
Questioni relative al codice
Script shell e chiamate system()
Input da utenti non sicuri
Straripamento del buffer
Variabili ambiente
Funzione gethostbyname()
Segnali
Userid e groupid
Punti deboli delle librerie
Esecuzione di altri programmi
Corse /tmp
Attacchi rifiuto del servizio
Numeri casuali
Contrassegni
Password
Nomi di file
Collegamenti simbolici
Ambienti chroot()
Suddivisione dei programmi
Comunicazione tra i processi
Il demone identd
Confronto tra TCP e UDP
Confronto tra allocazione dinamica e statica della memoria
Livelli di sicurezza
Capacità di POSIX.1e
Cancellazione dei buffer
Presentazione di form HTML oltre i firewall
Attacchi di tipo spionaggio, accesso illecito e intromissione
Inclusioni server HTML
Questioni relative a server soggetti a fork anticipati
Timeout
Autenticazione a tre fattori
Moduli di autenticazione collegabili
Efficacia generale di un programma
Crittografia
Tipi di algoritmi crittografici
Sistemi di codifica
Punti deboli della codifica
Riepilogo
Compilazione per gdb
Uso dei comandi gdb di base
Avvio di gdb
Analisi del codice nel debugger
Esame dei dati
Impostazione dei punti d'interruzione
Esame e modifica del codice in esecuzione
Concetti e comandi avanzati di gdb
Area di validità e contesto di variabile
Attraversamento dello stack di chiamate
Lavoro con i file sorgente
Comunicazione con la shell
Collegamento a un programma in esecuzione
Riepilogo
Comprensione dei file tar
Creazione di file tar
Aggiornamento dei file tar
Elenco del contenuto dei file tar
Comprensione del comando install
Comprensione di RPM
Requisiti minimi
Configurazione di RPM
Controllo della build: uso di un file spec
Analisi di un file spec
Creazione del pacchetto
Riepilogo
Pagine man
Elementi di una pagina man
Una pagina man di esempio
Utilizzo del comando groff
Convenzioni Linux
Realizzazione di documenti SGML utilizzando SGML-tools
SGML-tools
Tag SGML-tools
Formattazione dei documenti SGML
Riepilogo
Licenza MIT/X
Licenza BSD
Licenza Artistic
Licenze GNU General Public
Licenza GNU General Public License
La licenza GNU Library General Public License
La definizione Open Source
Scelta della licenza appropriata
Documentazione disponibile
Programma di esempio: userchange
basetype
Definizione di una tabella dei simboli per descrivere un tipo di struttura
Definizione di una collezione casuale di variabili
Inserimento di un'ulteriore tabella dei simboli
Segnalazione degli errori
Puntatori smart
Funzioni della libreria della tabella dei simboli
userchange main()
Esecuzione di prova
Collana: Tutto&Oltre
Uscita: Gennaio 2000
Pagine: 752
ISBN: 9788873036197
Formato: 17 x 24 cm
Booksite:
» Presentazione
» Indice libro
» Codice esempi
Feedback: View blog reactions
Seconda edizione del manuale tascabile dedicato a Ubuntu, la vera grande alternativa su base GNU/Linux nel panorama dei sistemi operativi. Per conoscerne le potenzialità e cominciare a utilizzarlo.
La guida tascabile a Linux, scritta dall'autore di 'Linux server per l'amministratore di rete', per installare e cominciare a utilizzare Linux, distribuzione Fedora.
La classifica delle vendite di questo sito durante l'ultimo mese.