====== Programma di massima LCS ====== (Per il programma dettagliato e l'ordine corretto di presentazione degli argomenti consultare la sezione __//lezioni ed esercitazioni//__ di ciascun anno accademico) * Strumenti per la programmazione C in ambiente GNU (e dintorni) (2h lez + 2h ese) * compilazione e linking * suddivisione di un programma in moduli: gestione(make) e archiviazione (ar) * debugging * cenni ad altri tool * Unix e la shell (6h lez + 6h ese) * Unix: concetti di base, comandi/utility * La shell di Unix * introduzione alla shell * cenni agli script * personalizzazione con alias ed opzioni e variabili * espansione (alias, storia, tilde, percorso, variabili, sostituzione di comando, espressioni aritmetiche) * quoting * Controllo dell'I/O: ridirezione * Exit status * Combinare comandi * pipe * sequenza non condizionale * sequenze condizionali &&, || * comandi composti (uso di {...} e (...) ) * Operatori su stringhe (pattern matching) * Costrutti di controllo * condizionale (if) e test * iterazione limitata (for) * scelta multipla (case) * iterazione illimitata (while e do/while) * menu' con select * C e la programmazione di sistema (1h lez) * cos'e' una System Call * gestione sistematica degli errori * consigli pratici di programmazione * convenzioni e commenti * I file (2h lez + 2 h ese) * concetti base dei FS Unix * operazioni di base (open, read, write, close, lseek) * link: concetti e system call per la gestione * manipolare e accedere alle informazioni sui file (stat, fcntl, ioctl) (brevi cenni) * gestione delle directory (opendir,readdir,...,closedir) (brevi cenni) * duplicazione di descrittori (dup e dup2) * I processi (2h lez + 2h ese) * il modello fork/exec * gestione dei figli (wait), exit status * atexit(), _atexit() * I thread (3h lez + 4h ese) * i modello a thread * creazione e distruzione * mutex e variabili di condizione * soluzione ti tipici problemi di concorrenza * Maccanismi di IPC : Pipe (2h lez + 2h ese) * Pipe anonime * Pipe con nome (FIFO) * Maccanismi di IPC : Socket (2h lez + 2h ese) * Modello client-server * Socket per comunicazione locale (AF_UNIX) * Socket per comunicazione in rete (AF_INET) * Segnali (2h lez + 2h ese) * Concetti generali: eventi asincroni, gestori di eventi * Ignorare, gestire, mascherare ed attendere i segnali * Segnali, processi e thread