Argomenti della lezione. Generalità. System calls. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Argomenti della lezione. Generalità. System calls. Corso di Sistemi Operativi Programmazione di Sistema e Concorrente"

Transcript

1 Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione III Gestione dell Input/Output System Calls Argomenti della lezione System calls Struttura del file system UNIX System calls per la gestione dei files ANSI C - Input/Output System calls vs. chiamate a libreria Corso di Sistemi Operativi - Esercitazioni (Lez.3) 2 System calls Generalità Una system call è l unico modo di accedere al kernel del S.O. al fine di effettuare una operazione privilegiata o specifica per l hardware/sistema (in codice assembly) Ad ogni system call è associato un numero univoco In Linux (RedHat 8.0) sono definite 243 system calls (<asm/unistd.h>) #define NR_syscallname syscallnum Es: #define NR_open 5 Nel Darwin di MacOsX (<sys/syscall.h>) definite 363 syscalls Corso di Sistemi Operativi - Esercitazioni (Lez.3) 4 1

2 Implementazione 2 possibili invocazioni dirette: metodo syscall(syscallnum, args ) macro _syscalln definite in <asm/unistd.h> (sconsigliato); Fornite al programmatore attraverso delle funzioni interfaccia (stub), definite in genere nella libreria libc, con lo stesso nome della syscall; Entrambe memorizzano gli argomenti nei registri (limite max), cambiano il modo user in modo kernel (nell 80x86 interrupt 0x80), facendo sì che il kernel esegua il vero e proprio codice della syscall. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 5 Esempio Chiusura di un file Chiamata alla funzione in libc: #include <unistd.h> close(filedescriptor); Chiamata tramite macro: #include <unistd.h> _syscall1(int, close, int, filedescriptor); Chiamata diretta: #include <syscall.h> extern int syscall(int, ); syscall(sys_close, filedescriptor); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 6 Argomenti e valori di ritorno Il numero di argomenti può variare da 0 a 6, a seconda della system call invocata Valori di ritorno: 0 (o +), se la chiamata va a buon fine; -1, se vi sono stati degli errori (assegnano lo specifico codice di errore nella variabile globale errno, definita in <errno.h>) dichiarazione: extern int errno Con la funzione: include <stdio.h> void perror (char *str); si ottiene una descrizione dell errore nel formato: str: messaggio-di-errore \n Corso di Sistemi Operativi - Esercitazioni (Lez.3) 7 Principali system calls Classe Gestione di file Gestione di processi Comunicazione fra processi creat() read() dup() stat() chown() fork() alarm() getpid() msgget() msgrcv() semget() shmget() System Call open() write() link() fstat() umask() execx() signal() getppid() msgctl() pipe() semop() shmctl() close() lseek() unlink() chmod() ioctl() wait() kill() exit() msgsnd() mkfifo() semctl() shmat() Corso di Sistemi Operativi - Esercitazioni (Lez.3) 8 2

3 Files in UNIX 4 tipi di files: Regolari o ordinari Directory Pipe e Fifo Speciali rappresentano un device (block device o character device) non contengono dati, ma solo un puntatore al device è visto dal file system come una semplice sequenza di bytes (stream) può essere indicato con più di un nome, anche in directory diverse i nomi multipli sono detti link (hard link) e sono tutti equivalenti per il S.O. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 9 Struttura di un file E rappresentato da un inode, che contiene: attributi del file 15 puntatori a blocchi di dati contenuto del file I primi 12 puntano direttamente a blocchi Gli altri tre puntano a blocchi indiretti (single indirect block, double indirect block pointer, triple indirect block) Tutti gli inodes sono memorizzati in un array del file system detto i-list, di dimensione fissata L accesso ad uno specifico inode in una i-list (link) avviene attraverso un i-number (short int) Ogni file di un file system ha un i-number L inode di una directory contiene la lista dei files (inode) in essa contenuti (cambiano gli attributi) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 10 Attributi di un inode Accesso ad un inode {-,d,b,c,p UID (2/4 byte) GID (2/4 byte) date links_count rwx rwx rwx Sticky (1 bit) tipologia di file: normale, directory, block-device, character-device, pipe identificatori del proprietario e del suo gruppo ora dell ultima modifica e dell ultimo accesso al file contatore del numero di hard link al file permessi di accesso per proprietario, gruppo, altri (codifica ottale) per le directory rimuove la possibilità di cancellare files Corso di Sistemi Operativi - Esercitazioni (Lez.3) 11 Una system call indica il file a cui si vuole accedere tramite un file descriptor (int 0) Il file descriptor è utilizzato dal kernel per indicizzare una tabella di file aperti per il processo corrente Ogni entry della tabella contiene un puntatore ad una file structure (vnode) Essa, a sua volta, punta ad un inode Poiché la tabella dei files aperti ha una lunghezza fissa (impostabile solo al boot) c è un limite imposto al # di files aperti contemporaneamente nel sistema Corso di Sistemi Operativi - Esercitazioni (Lez.3) 12 3

4 System calls per la gestione files in Unix Descrittori speciali ed eredità di descrittori 0 standard input 1 standard output 2 standard error In <unistd.h>: aperti per default alla creazione di un processo i relativi file possono essere chiusi #define STDIN_FILENO 0 /* standard input file descriptor */ #define STDOUT_FILENO 1 /* standard output file descriptor */ #define STDERR_FILENO 2 /* standard error file descriptor */ Corso di Sistemi Operativi - Esercitazioni (Lez.3) 14 Creazione di file int creat(char *file_name, int mode) invoca la creazione di un file; se il file esiste già, rimuove il contenuto del file preesistente, coservando però i suoi diritti di accesso *file_name: puntatore alla stringa di caratteri che definisce il pathname del file da creare mode: specifica i permessi di accesso al file da creare il descrittore di file per l accesso al file creato (-1 se errore) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 15 creat(): errori parte del path della stringa *file_name non è una directory o non esiste la stringa *file_name corrisponde ad una directory esistente non si hanno permessi di accesso ad una delle directory specificate nel path *file_name è un puntatore nullo o punta a un indirizzo di memoria non valido per il processo è già stato raggiunto il # max di file che si possono aprire contemporaneamente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 16 4

5 creat(): esempio Creazione di un file di nome pippo, nella directory corrente, con permessi di lettura-scrittura per tutti gli utenti #include <stdio.h> void main() { if(creat("pippo",0666) == -1) { printf("errore in chiamata creat\n"); exit(1); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 17 Apertura di un file int open(char *file_name, int option_flags [, int mode]) invoca l apertura di un file esistente è anche possibile invocare la creazione del file *file_name: puntatore alla stringa di caratteri che definisce il pathname del file da aprire option_flags: specifica la modalita di apertura (read, write etc.) mode: specifica i permessi di accesso al file in caso di creazione contestuale all apertura un descrittore per l accesso al file (-1 in caso di fallimento) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 18 Valori per option_flags L option_flags è espresso come combinazione (in bitwise or ) di 1 o più di questi valori, definiti in <fcntl.h>: O_RDONLY: apertura del file in sola lettura; O_WRONLY: apertura del file in sola scrittura; O_RDWR: apertura in lettura e scrittura; O_APPEND: apertura del file con puntatore alla fine del file; ogni scrittura sul file sarà effettuata a partire dalla fine del file; O_CREAT : crea il file con modalità d'accesso specificate da mode solo se esso non esiste; O_TRUNC : elimina il contenuto del file se esso già esiste; O_EXCL : (exclusive) serve a garantire che il file sia stato effettivamente creato dal processo che effettua la chiamata. N.B.: open( pippo, O_WRONLY O_TRUNC O_CREAT, 0660) creat( pippo, 0660) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 19 open(): errori parte del path della stringa *file_name non è una directory o non esiste non si hanno permessi di accesso ad una delle directory specificate nel path il file indicato non esiste e O_CREAT non è presente nella specifica di option_flags; il file indicato esiste già e in option_flags sono specificati O_CREAT e O_EXCL; il file indicato è un file di testo condiviso che è attualmente in uso; *file_name è un puntatore nullo o punta a un indirizzo di memoria non valido per il processo è già stato raggiunto il # max di file che si possono aprire contemporaneamente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 20 5

6 Chiusura di un file int close(int descriptor) invoca la chiusura di un file e l eventuale svuotamento del buffer descriptor: descrittore del file da chiudere -1 in caso di fallimento descriptor non corrisponde ad un canale di input/output aperto il S.O. chiude automaticamente i file ancora aperti alla terminazione di un processo Corso di Sistemi Operativi - Esercitazioni (Lez.3) 21 Lettura: read() int read(int descriptor, char *buffer* buffer,, unsigned size) invoca la lettura di un dato numero di caratteri (byte) da un file descriptor: descrittore relativo al file (aperto) da cui leggere *buffer: puntatore all area di memoria buffer dove memorizzare i byte letti size: quantità di byte da leggere un intero 0 indicante il numero di byte effettivamente letti (-1 se fail) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 22 read(): errori descriptor non corrisponde ad un canale di input/output aperto descriptor corrisponde ad un canale non aperto in lettura il buffer indicato, avente dimensione size non è contenuto interamente all interno dello spazio di indirizzamento del processo se il # di bytes letti > della dimensione del buffer, i caratteri in eccesso vengono scritti nell area di memoria esterna al buffer: se interna al processo errore non segnalato Corso di Sistemi Operativi - Esercitazioni (Lez.3) 23 Scrittura: write() int write(int int descriptor, char *buffer* buffer,, unsigned size) invoca la scrittura di un certo numero di caratteri su file descriptor: descrittore relativo al file su cui scrivere buffer: puntatore al buffer dal quale vengono prelevati i caratteri che si vogliono scrivere size: quantità di byte da scrivere il numero di byte effettivamente scritti (-1 in caso di fallimento) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 24 6

7 write(): errori descriptor non corrisponde ad un canale di input/output aperto descriptor corrisponde ad un canale non aperto in scrittura il buffer indicato, avente dimensione size non è contenuto interamente all interno dello spazio di indirizzamento del processo se il # di bytes scritti > della dimensione del buffer, vengono scritti su file anche i bytes contenuti nell area di memoria esterna al buffer la scrittura di X caratteri su un file esistente appena aperto, sostituisce i primi X caratteri di tale file, non effettua troncamento Corso di Sistemi Operativi - Esercitazioni (Lez.3) 25 Un esempio di applicazione: il comando cpcat Scrivere un programma che, attraverso la sintassi: cpcat file_sorg file_dest effettua una copia di file_sorg nominandola file_dest Se il file destinazione già esiste il sistema deve darne notifica all utente Se il file destinazione non viene specificato il sistema deve mostrare il file sullo standard output Corso di Sistemi Operativi - Esercitazioni (Lez.3) 26 Esempio Cosa accade eseguendo il seguente frammento di codice? #include<fcntl.h> int main() { int fd1, fd2; fd1 = open("file1", O_WRONLY O_CREAT O_TRUNC, 0644); fd2 = open("file1", O_WRONLY); write(fd1, Pippo", strlen( Pippo")); write(fd2, Ugo", strlen( Ugo")); close(fd1); close(fd2); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 27 Posizionamento: lseek() int lseek(int descriptor, long offset, int option) modifica il valore del file pointer descriptor: descrittore relativo al file di cui spostare il pointer offset: numero di caratteri di cui viene spostato il file pointer option: indica il punto da cui calcolare lo spostamento SEEK_SET (=0): spostamento a partire da inizio file; SEEK_CUR (=1): spostamento a partire dal valore corrente del file pointer; SEEK_END (=2): spostamento a partire dalla fine del file; nuovo valore del file pointer (# di caratteri dall inizio del file), -1 se fallimento Corso di Sistemi Operativi - Esercitazioni (Lez.3) 28 7

8 lseek() descriptor non corrisponde a nessun canale di input/output aperto; option ha un valore non ammesso il nuovo file pointer avrebbe un valore negativo Esempi: lseek(fd, 10, 0); /* Sposta di 10 byte dall inizio */ lseek(fd, 20, 1); /* Sposta di 20 byte in avanti */ lseek(fd, -10, 1); /* Sposta di 10 byte indietro */ lseek(fd, -10, 2); /* Sposta a 10 byte dalla fine */ lseek(fd, -10, 0); /* Errore (file pointer immutato) */ Corso di Sistemi Operativi - Esercitazioni (Lez.3) 29 Aliasing di file: link() int link(char *path_name, char *alias_name); invoca la creazione di un alias *path_name: puntatore alla stringa di caratteri che definisce il file di cui si vuole creare un alias *alias_name: puntatore alla stringa di caratteri che definisce il nome dell alias 0 in caso di successo, -1 se fallisce Corso di Sistemi Operativi - Esercitazioni (Lez.3) 30 link(): errori un componente del path_name: non è una directory non esiste supera i limiti *alias_name punta ad una stringa di caratteri che identifica un alias già esistente alias di directory possono essere creati solo dal superuser: *path_name punta ad una directory ed il processo non è un processo di superutente la directory di destinazione per l alias non è accessibile in scrittura Corso di Sistemi Operativi - Esercitazioni (Lez.3) 31 unlink() int unlink(char *alias_name); int unlink(char *alias_name); rimuove l alias indicato, e decrementa il contatore di riferimenti al corrispondente file (campo links_count dell inode) se links_count = 0 il file viene eliminato *path_name: puntatore alla stringa di caratteri che definisce il file di cui si vuole creare un alias *alias_name: puntatore alla stringa di caratteri che definisce il nome dell alias 0 in caso di successo, -1 se fallisce *alias_name identifica un alias inesistente l alias risiede in un file system a sola lettura Corso di Sistemi Operativi - Esercitazioni (Lez.3) 32 8

9 link() + unlink() = rinomina #include <stdio.h> main(int argc, char *argv[]) { if (argc!= 3) { fprintf(stderr, uso: %s vecchionome nuovonome\n, argv[0]); exit(1); if (link(argv[1], argv[2] == -1) { perror( errore in link ); exit(1); if (unlink(argv[1]) == -1) { perror( errore in unlink ); exit(1); Se la chiamata link fallisce allora esegue perror ed esce, altrimenti crea il link Se la chiamata unlink fallisce esegue perror ed esce, altrimenti elimina il vecchio link Duplicazione di un descrittore In UNIX è possibile duplicare un descrittore di file esistente. Il nuovo descrittore: afferisce allo stesso file associato al descrittore originario; eredita lo stesso file pointer del canale originario; eredita la stessa modalità di accesso al file del canale originario Corso di Sistemi Operativi - Esercitazioni (Lez.3) 33 Corso di Sistemi Operativi - Esercitazioni (Lez.3) 34 dup() int dup(int descriptor); invoca la duplicazione di un descrittore di file descriptor: descrittore di file che si vuole duplicare un intero positivo corrispondente al nuovo descrittore di file (-1 se errore) è il più piccolo indice libero della tavola dei files aperti descriptor non identifica un canale di I/O aperto è già stato raggiunto il # max di file apribili contemporaneamente dal processo Corso di Sistemi Operativi - Esercitazioni (Lez.3) 35 Esercizio Scrivere un programma che, dato un file HTML in ingresso, scriva (su STDOUT o su file) tutto il testo non contenuto in tag HTML < >. Si utilizzi il codice del programma CPCAT, modificandolo opportunamente. Corso di Sistemi Operativi - Esercitazioni (Lez.3) 36 9

10 ANSI C Input e Output Standard ANSI L ANSI ha definito una libreria di funzioni standard per il linguaggio C (ANSI-C) che riguardano: input/output, gestione delle stringhe, routines matematiche, ; I programmi che limitano la loro interazione con il sistema alle facilities fornite da tale libreria sono portabili su sistemi diversi; Le funzioni offerte da tale libreria sono dichiarate in diversi headers: <stdio.h>, <string.h>, <ctype.h>, <math.h>, ANSI C Standard Library Sistema UNIX Sistema Windows Sistema MAC Corso di Sistemi Operativi - Esercitazioni (Lez.3) 38 Standard Input e Output Stream di testo: sequenza di linee terminate da un carattere di newline Se il sistema non opera in questo modo, la libreria fa ciò che è necessario per far sembrare che lo faccia Ogni sorgente che utilizza una delle funzioni di Input/Output offerte dalla libreria deve includere l header stdio.h: #include <stdio.h> stdin, stdout, stderr per i 3 stream di default Corso di Sistemi Operativi - Esercitazioni (Lez.3) 39 putchar() e getchar() int putchar(int ch) Manda il carattere ch allo stdout Il carattere inviato o la costante EOF se vi sono degli errori EOF è definita in <stdio.h> (solitamente -1) int getchar(void) Legge un carattere dallo stdin e lo restituisce Se non vi sono più caratteri da leggere restituisce EOF Corso di Sistemi Operativi - Esercitazioni (Lez.3) 40 10

11 Esempio Questo programma converte l input in minuscolo: #include <stdio.h> #include <ctype.h> Contiene la dichiarazione di tolower() main() /* lower: converte l input in minuscolo */ { int c; while ((c = getchar())!= EOF) putchar(tolower(c)); return (0); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 41 Output formattato: printf() int printf(char *format, arg1, ); int sprintf(char *string, char *format, arg1, ); Stampa su schermo (o su stringa) una stringa formattata, costituita da due tipi di oggetti: caratteri ordinari: vengono stampati così come sono; specifiche di conversione: ognuna di esse definisce la conversione e la stampa del successivo argomento passato alla funzione Il numero di caratteri stampati Specifiche di conversione: %[-][min_width][.][precision][h/l][conver_char] Esempio: printf ( var1 = %d; var2 = %s,var1, s1); Stampa: var1 = 5; var2 = ciao, Ritorna: 21 Corso di Sistemi Operativi - Esercitazioni (Lez.3) 42 Carat. d,i o x,x u c s f e,e g,g p Caratteri di conversione Tipo arg. int int int int int char * double double double void * Stampato come Numero decimale Numero ottale unsigned (senza 0 iniziale) Numero esadecimale unsigned (senza 0x o 0X) Numero decimale unsigned Singolo carattere Stringa fino al carattere \0 o precision caratteri [-]m.dddddd, il numero di d è dato dalla precision [-]m.dddddd[e/e][+/-]xx %e o %E se l esponente è < di -4 o precision, altrimenti %f puntatore (rappresentazione dipendente dall implementazione) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 43 Input formattato: scanf() int scanf(char *format, arg1, ); int sscanf(char *string, char *format, arg1, ); Legge caratteri dallo stdin, interpretandoli in base alle specifiche di format, e le memorizza nei successivi argomenti (devono essere puntatori) Si ferma al termine di format, o quando uno degli input non soddisfa la specifica Il numero di variabili lette (ed assegnate) La stringa di formato può contenere: spazi e tabulazioni (non ignorati) caratteri ordinari (non %), che si aspettano di ricevere dallo stream di input specifiche di conversione: %[*][max_width][h/l/l][conver_char] Corso di Sistemi Operativi - Esercitazioni (Lez.3) 44 11

12 Esempio Programma che riconosce date nei formati: GG Mese Anno (20 Marzo 2003) GG/MM/AA (20/03/03) int giorno, mese, anno; char nomemese[20]; while (getline(linea, sizeof(linea), stdin) > 0) { if (sscanf(linea, %d %s %d, &giorno, nomemese, &anno) == 3) printf( Valido: %s\n, linea); else if (sscanf(linea, %d/%d/%d, &giorno, &mese, &anno) == 3) printf( Valido: %s\n, linea); else printf( Non valido: %s\n, linea); Corso di Sistemi Operativi - Esercitazioni (Lez.3) 45 Manipolazione di stringhe Funzioni definite in <string.h>: strcat(s,t): concatena t alla fine di s strncat(s,t,n): concatena n caratteri di t alla fine di s strcmp(s,t): confronto, ritorna un numero negativo, nullo o positivo se s<t, s==t, s>t strncmp(s,t,n): confronta solo i primi n caratteri strcpy(s,t): copia t in s strncpy(s,t,n): copia al più n caratteri di t in s strlen(s): ritorna la lunghezza di s strchr(s,c): ritorna il puntatore alla prima occorrenza di c in s, o NULL se non presente Corso di Sistemi Operativi - Esercitazioni (Lez.3) 46 Accesso ai file E possibile aprire ulteriori streams, oltre ai 3 standard forniti dal sistema, invocando: FILE *fopen(char* filename, char* mode); filename: stringa contenente il nome del file da aprire; mode: stringa che indica il tipo di accesso al file ( r lettura, w scrittura, a append, b binario) Fa un opportuna richiesta al S.O. e ritorna un puntatore da utilizzare nelle successive operazioni di lettura/scrittura Se il file indicato non esiste: se si accede in modo w o a il file viene creato; se si accede in modo r la funzione ritorna NULL; Corso di Sistemi Operativi - Esercitazioni (Lez.3) 47 Struttura FILE Il puntatore punta alla struttura FILE (definita in <stdio.h>), che contiene informazioni sul file aperto, tra cui: posizione del buffer posizione del carattere corrente nel buffer modalità di apertura file eventuali errori occorsi Anche stdin, stdout e stderr sono dei puntatori a FILE: sono assegnati dal S.O. all avvio di un programma e sono costanti Corso di Sistemi Operativi - Esercitazioni (Lez.3) 48 12

13 getc(), putc(), fscanf(), fprintf() int putc(int c, FILE *fp); int getc(file *fp); int fprintf(file *fp, char *format, ); int fscanf(file *fp, char *format, ); Sono le generalizzazioni a stream non standard di putchar(), getchar(), printf() e scanf(); Ridefinizione: #define getchar() getc(stdin) #define putchar(c) putc((c), stdout) #define printf(format, ) fprintf(stdout, format, ) #define scanf(format, ) fscanf(stdin, format, ) Corso di Sistemi Operativi - Esercitazioni (Lez.3) 49 Chiusura di un file int fclose(file *fp); Rompe la connessione fra il puntatore ed il file creata con fopen(); Stesse considerazioni delle corrispondenti system calls: Limite massimo al numero di files aperti contemporaneamente chiudere i files non più utilizzati Scarica il buffer delle chiamate putc e getc E invocato automaticamente per ogni file aperto alla terminazione (normale) di un programma Corso di Sistemi Operativi - Esercitazioni (Lez.3) 50 System call vs Funzioni di libreria System calls Standard Posix (UNIX) Codice in kernel space Prestazioni (?) Funzioni: memoria input/output processi comunicazione sincronizzazione gestione eventi asincroni utilities Funzioni di libreria Standard ANSI (C) Codice in process space Portabilità Funzioni: memoria input/output gestione eventi asincroni utilities In UNIX implementate tramite system calls Corso di Sistemi Operativi - Esercitazioni (Lez.3) 51 Esercizio Realizzare il programma cpcat visto precedentemente, utilizzando esclusivamente funzioni standard ANSI C Corso di Sistemi Operativi - Esercitazioni (Lez.3) 52 13

Corso di Sistemi Operativi Programmazione di Sistema e Concorrente

Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Sistemi Operativi Programmazione di Sistema e Concorrente Lezione III Gestione dell Input/Output System Calls Argomenti

Dettagli

Esercitazione 4. Gestione dei file in Unix

Esercitazione 4. Gestione dei file in Unix Esercitazione 4 Gestione dei file in Unix Primitive fondamentali (1/2) open close Apre il file specificato e restituisce il suo file descriptor (fd) Crea una nuova entry nella tabella dei file aperti di

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 13 Corso di Informatica 2009-2010 Lezione 13 1 Input/output da file Stream Si definisce stream una sequenza di bytes di dati che può essere in ingresso (input

Dettagli

Il linguaggio C. Breve panoramica su stdio.h

Il linguaggio C. Breve panoramica su stdio.h Il linguaggio C Breve panoramica su stdio.h 1 Input/Output: stdio.h Contiene definizioni di costanti legate all I/O es. EOF (end of file) #define EOF (-1) valore restituito alla fine di un file Contiene

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato System Call open close read write lseek 2 1 file descriptor sono degli interi non negativi il kernel assegna un file descriptor

Dettagli

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File

Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, A. Pennisi, S. Peluso, S. Salza, C. Ciccotelli Sommario Input/Output

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

Streams e disk files

Streams e disk files Streams e disk files Streams Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream: Testo: sequenza

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

File binari e file di testo

File binari e file di testo I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file

Dettagli

Librerie C. Corso di Linguaggi e Traduttori 1 AA

Librerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int

Dettagli

La gestione dell'errore

La gestione dell'errore La gestione dell'errore Esiste una variabile globale intera, definita nell'header errno.h che viene settata nel caso in cui una chiamata di sistema non possa eseguire correttamente il suo compito. Tale

Dettagli

Capitolo 5 -- Stevens

Capitolo 5 -- Stevens Libreria standard di I/O Capitolo 5 -- Stevens Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano

Dettagli

System calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc.

System calls. permettono ai programmi utente di richiedere servizi al Sistema Operativo. servizi come scrittura di file, stampa su video, ecc. Le System Calls System calls permettono ai programmi utente di richiedere servizi al Sistema Operativo servizi come scrittura di file, stampa su video, ecc. corrispondenti procedure di libreria GNU C Library

Dettagli

Lezione 22: Input/Output e Files

Lezione 22: Input/Output e Files Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard

Dettagli

Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo:

Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: I/O (Input/Output) System Call di I/O 2 Per operare su un file abbiamo bisogno di aprirlo, scriverlo, leggerlo, chiuderlo: open (e creat) write read close lseek 1 File descriptors 3 File descriptor (fd)

Dettagli

Sistemi Operativi Teledidattico

Sistemi Operativi Teledidattico Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione

Dettagli

Gestione dei File. Credits Prof. Campi

Gestione dei File. Credits Prof. Campi Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè

Dettagli

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012

Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 Sommario: Esercitazione di Lab. di Sistemi Operativi 1 a.a. 2011/2012 - System Call Parte 1 open (apertura file) creat (creazione file) close (chiusura file) write (scrittura file) read (lettura file)

Dettagli

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 9 File D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Input/Output Stream

Dettagli

&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file;

&& (nessun altro processo ha il file aperto) && (il fd e chiuso) Cancella il file; CREAZIONE ritorna fd o 1 Pseudocodice dell operazione: If(file esiste) If(Write permission) Tronca la lunghezza a 0 e lascia il file aperto in scrittura; Else Exit(-1); Else Alloca un nuovo INODE con link=1

Dettagli

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Il File-System. I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino Il File-System I file in ambiente Linux Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 File System Il file-system è uno degli aspetti più visibili di un sistema operativo

Dettagli

Digressione: man 2...

Digressione: man 2... Syscall File I/O Digressione: man 2... Le funzioni della libreria standard UNIX associate alle system call di Linux sono documentate nella sezione 2 di man e.g.: man 2 open Ogni manpage di system call

Dettagli

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie

Le librerie standard. ! La libreria standard del C è in realtà un insieme di librerie ! La libreria standard del C è in realtà un insieme di librerie! Per usare una libreria, non occorre inse -rirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle! Ogni file sorgente

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 6 Marzo 2016 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 6 Marzo 2016 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle

Dettagli

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp. Introduzione L elaborazione dei files in C D.D. cap. 11+ pp. 569-572 K.P. pp. 581-583 La memorizzazione dei dati nelle variabili e nei vettori è temporanea: tutti quei dati andranno persi quando il programma

Dettagli

Sulla libreria standard, III. Manipolare file con stdio.h

Sulla libreria standard, III. Manipolare file con stdio.h Sulla libreria standard, III Manipolare file con stdio.h 1 Libreria per input/output Con libreria si intende una collezione di sottoprogrammi che vengono utilizzati per lo sviluppo di software non eseguibili,

Dettagli

Laboratorio di Sistemi Operativi primavera 2009 open

Laboratorio di Sistemi Operativi primavera 2009 open primavera 2009 open System Call close read I/O non bufferizzato write lseek 2 file descriptor file descriptor...ancora sono degli interi non negativi il kernel assegna un file descriptor ad ogni file aperto

Dettagli

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto

I files (archivi) Il C definisce in stdio.h tre file aperti automaticamente: stdin, stdout e stderr.! Sono ad accesso sequenziale diretto C I files di dati I files (archivi) Files di programmi sono solo gestiti dal compilatore C Files di dati Possono essere creati, aggiornati, letti, scritti da programmi C Servono per conservare dati su

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 21 Maggio 2014 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 21 Maggio 2014 Obiettivi Il salvataggio dei dati File File e OS File in C 2 3 I programmi che abbiamo considerato finora. Perdono

Dettagli

Files, File I/O. Franco Maria Nardini

Files, File I/O. Franco Maria Nardini Files, File I/O Franco Maria Nardini UNIX file types UNIX non richiede una struttura interna del file. Dal punto di vista del sistema operativo c è un solo tipo di file. Struttura e interpretazione sono

Dettagli

Linguaggio C: i file

Linguaggio C: i file Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: i file La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2015 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2015 2nda prova in itinere Era il 21 Maggio 2 2nda prova in itinere Era il 21 Maggio Spostata (da 3 settimane) al 22

Dettagli

Introduzione al C. Stream e disk file

Introduzione al C. Stream e disk file Introduzione al C Stream e disk file Stream Un canale è una sequenza di byte di dati Sorgente o destinazione di dati che possono essere associati ad un disco o ad altre periferiche Due tipi di stream:

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Gestione dei file Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Gli stream Si dice stream qualsiasi sorgente di dati in ingresso e qualsiasi

Dettagli

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 14 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche

Dettagli

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2)

Corso di Fondamenti di Programmazione canale E-O. Introduzione. Elaborazione dei files (2) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri L elaborazione dei files in C DD, Cap. 11 + pp. 569-572 KP, pp. 581-583 Introduzione La memorizzazione dei dati nelle variabili e nei

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

I files in C. A cura del prof. Ghezzi

I files in C. A cura del prof. Ghezzi I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 23 Martedì 17-01-2017 Il file system Il file system si basa sulle astrazioni

Dettagli

Università degli Studi di Milano

Università degli Studi di Milano Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche Lezione 1 Introduzione ai file FABIO SCOTTI LABORATORIO DI PROGRAMMAZIONE PER LA SICUREZZA Modulo 5 -

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2016-17 Pietro Frasca Lezione 20 Giovedì 22-12-2016 Comunicazione: pipe In Unix, processi possono comunicare

Dettagli

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p

Dettagli

Università degli Studi di Milano

Università degli Studi di Milano Università degli Studi di Milano Corso di Laurea in Sicurezza dei Sistemi e delle Reti Informatiche Lezione 13 e 14 Introduzione ai file FABIO SCOTTI LABORATORIO DI PROGRAMMAZIONE PER LA SICUREZZA 1. Concetti

Dettagli

Igino Corona

Igino Corona Sistemi Operativi Esercitazione 6: Comunicazione fra processi in Linux PIPE Igino Corona igino.corona@diee.unica.it 17 Novembre 2009 File In Linux, un le può essere un contenitore di informazione o uno

Dettagli

Comandi. Sistema Operativo

Comandi. Sistema Operativo Introduzione Programmazione di sistema in UNIX File comandi utente Shell Comandi Sistema Operativo Programmi in C Servizi di sistema (primitive, system call) solo per driver fork exec wait exit char I/O

Dettagli

ELEMENTI DI INFORMATICA. Linguaggio C

ELEMENTI DI INFORMATICA. Linguaggio C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Organizzazione del filesystem Meccanismo

Dettagli

Il File System di Unix

Il File System di Unix Il File System di Unix 1 Il File System di UNIX Organizzazione logica / bin etc usr dev anna paolo.profile file1 mbox testi... Sistemi Operativi L A - Il File System di Unix 2 2 Il File System di UNIX

Dettagli

UNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica

UNIX file system: organizzazione logica. Il File System di UNIX. UNIX file system: organizzazione fisica UNIX file system: organizzazione logica / Il File System di UNIX omogeneità: tutto è file tre categorie di file file ordinari direttori bin.profile etc usr dev anna file1 paolo mbox dispositivi fisici:

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio di Sistemi Operativi II Semestre - Marzo/Giugno 2008 matricole congr. 0 mod 3 I/O non bufferizzato-2 dup, dup2 System Call sync, fsync, fdatasync fcntl 2 1 Condivisione di file Unix supporta la possibilità che più processi

Dettagli

Lezione 7: Funzioni e gestione dei File

Lezione 7: Funzioni e gestione dei File Lezione 7: Funzioni e gestione dei File Laboratorio di Elementi di Architettura e Sistemi Operativi 18 Aprile 2012 Le funzioni Funzioni Un programma C consiste di una o più funzioni Almeno main() Funzionamento

Dettagli

File I/O. M. R. Guarracino: File I/O 1

File I/O. M. R. Guarracino: File I/O 1 File I/O M. R. Guarracino: File I/O 1 File I/O Gran parte delle operazioni su file in ambiente UNIX possono essere eseguite utilizzando solo cinque funzioni: open read write lseek close M. R. Guarracino:

Dettagli

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1.

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1. Input /output e gestione dei file Premessa Iniziamo la lezione dicendo subito che per INPUT/OUTPUT si intende l insieme delle operazioni di ingresso ed uscita, ossia lo scambio di informazioni tra il programma

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

Il File System di UNIX

Il File System di UNIX Il File System di UNIX UNIX file system: organizzazione logica / bin etc usr dev omogeneità: tutto è file tre categorie di file file ordinari direttori anna paolo.profile file1 mbox testi... dispositivi

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. File. Marco D. Santambrogio Ver. aggiornata al 15 Maggio 2013 File Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 15 Maggio 2013 Obiettivi Alcuni problemi aperti Il main() Allocazione dinamica della memoria Il salvataggio dei dati File File

Dettagli

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Stdio.h Input / Output Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard Sia i file che i dispositivi (tastiera, schermo...) sono visti come

Dettagli

Architettura dei calcolatori e sistemi operativi. Input Output. IO 2 Il File System

Architettura dei calcolatori e sistemi operativi. Input Output. IO 2 Il File System Architettura dei calcolatori e sistemi operativi Input Output IO 2 Il File System File System E quel componente del Sistema Operativo che realizza i servizi di gestione dei file file: unità di archiviazione

Dettagli

Programmazione di sistema in Linux: gestione dei file. E. Mumolo

Programmazione di sistema in Linux: gestione dei file. E. Mumolo Programmazione di sistema in Linux: gestione dei file E. Mumolo Struttura di Linux System Call per il file system System Call per i processi Hardware: dischi, CPU, monitor, tastiera, schede di rete, porte

Dettagli

Files in C endofile

Files in C endofile Files in C Il C vede i file semplicemente come un flusso (stream) sequenziale di bytes terminati da un marcatore speciale che determina la fine del file (end-of-file). 0 1 2 3 4... endofile A differenza

Dettagli

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!

Settimana n.12. Obiettivi File!di!testo. Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e! Settimana n.12 Obiettivi File!di!testo Contenuti Concetto!di!file!e!funzioni! fopen/fclose Funzioni!fgets+sscanf Approfondimenti!su!printf! e!scanf 437 Files Vista d insieme dei formati di file File File

Dettagli

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I file L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione. I canali, sono delle strutture dati che contengono informazioni sul dispositivo fisico,

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 1 febbraio 2016 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file

Sommario. Manipolazione sequenziale di file in C Funzioni di base per I/O di file File Input/Output 1 Sommario Manipolazione sequenziale di file in C Funzioni di base per I/O di file 2 Manipolazione di file I file devono essere aperti prima dell uso Associa un puntatore a file a ogni

Dettagli

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale File in C Indice La gestione dei file in C e gli stream Apertura e chiusura di un file Operazioni sui file Accesso sequenziale e non sequenziale Gestione dei file in C In C all interno della standard library

Dettagli

Laboratorio di Sistemi Operativi primavera 2009

Laboratorio di Sistemi Operativi primavera 2009 primavera 2009 Libreria standard di I/O Libreria standard di I/O rientra nello standard ANSI C perché è stata implementata su molti sistemi operativi oltre che su UNIX le sue funzioni individuano il file

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3. 1 strace : visualizzazione delle system call invocate da un processo UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 strace : visualizzazione delle system call

Dettagli

La creazione di un nuovo processo in UNIX

La creazione di un nuovo processo in UNIX La creazione di un nuovo processo in UNIX #include int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la

Dettagli

Programmazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente

Programmazione di sistema in UNIX. Immagine di un processo in UNIX. Area dati. File comandi utente Programmazione di sistema in UNIX File comandi utente Shell Gestione processi Comandi Sistema Operativo Servizi di sistema (primitive, system call) fork exec wait exit char I/O block I/O open create close

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica-Informatica-Telecomunicazioni a.a. 2001-2002 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 3 1 Trasferimento

Dettagli

La Comunicazione tra Processi in Unix

La Comunicazione tra Processi in Unix La Comunicazione tra Processi in Unix La è un canale di comunicazione tra processi: unidirezionale: accessibile ad un estremo in lettura ed all'altro in scrittura molti-a-molti: più processi possono spedire

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 30/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I/O in C Il sistema di I/O del C è una interfaccia uniforme

Dettagli

Introduzione al C. Esercitazione 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria Clinica

Introduzione al C. Esercitazione 6. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria Clinica Corso di Fondamenti di Informatica Ingegneria Clinica Domenico Daniele Bloisi Informazioni Generali ing. Domenico Daniele Bloisi Dipartimento di Informatica e Sistemistica Stanza B213, secondo piano Via

Dettagli

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002 dott.ssa Francesca A. Lisi lisi@di.uniba.it Sommario Generalità sui file in C I file ad accesso sequenziale I file di testo Riferimenti

Dettagli

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3

Laboratorio di Sistemi Operativi Marzo-Giugno 2008 Matricole congrue 0 mod 3 Marzo-Giugno 2008 Matricole congrue 0 mod 3 Libreria standard di I/O Libreria standard di I/O Permette di fare I/O senza doversi preoccupare di problematiche di bufferizzazione Definizione del buffer Taglia

Dettagli

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa.

I File. Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa. Consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale. Generalmente un

Dettagli

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ;

Il processo figlio : utilizza lo stesso codice che sta eseguendo il padre ; La creazione di un nuovo processo in UNIX int fork(void); Viene creato un nuovo processo (figlio) identico (stesso codice, area dati copiata) al processo (padre) che ha invocato la fork Solo il valore

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 7 settembre 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

GESTIONE DEI FILE IN C

GESTIONE DEI FILE IN C GESTIONE DEI FILE IN C Il concetto di file.. è una parte logicamente contigua del contenuto di un dispositivo! Deve essere capace di memorizzare grandi quantità di dati! I dati memorizzati devono sopravvivere

Dettagli

Input-Output di basso livello

Input-Output di basso livello Input-Output di basso livello File in UNIX Il kernel di UNIX vede tutti i file come flussi non formattati di byte; il compito di interpretare ogni struttura logica interna ad un file e lasciato alle applicazioni.

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 28 giugno 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine

Dettagli