Introduction aux Systèmes et aux Réseaux

publicité
Introduction aux Systèmes et aux Réseaux
Cours 4 : Fichiers
D’après un cours de Julien Forget
et Thomas Vantroys (Univ Lille1)
Laure Gonnord
http://laure.gonnord.org/pro/teaching/
[email protected]
Master CCI - Université Lyon 1 - FST
Plan
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
2 / 64 Plan
Les fichiers
Objectif : manipuler la notion de fichier :
Le stockage de fichier, OS dépendant.
Coder avec des fichiers, l’API C-ANSI.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
3 / 64 Système de fichier
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
4 / 64 Système de fichier
Disque dur
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
5 / 64 Système de fichier
Disque dur
Structure d’un disque dur
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
6 / 64 Système de fichier
Disque dur
Structure d’un disque dur
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
7 / 64 Système de fichier
Disque dur
Accès
Chaque plateau comporte deux faces ;
Une tête de lecture/écriture par face. Toutes les têtes se
déplacent simultanément ;
Chaque face est divisée en :
Secteurs : découpage longitudinal ;
Pistes : découpage circulaire ;
L’intersection secteur et piste est un Bloc ;
L’empilement des pistes forme un Cylindre ;
L’accès est simultané à des données d’un même cylindre.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
8 / 64 Système de fichier
Disque dur
Vue physique vs vue logique
Vue physique : pour accéder à un bloc de 512 octets il faut
connaître le cylindre, le plateau et le secteur : très
fastidieux !
Vue logique : le système de gestion de fichiers fournit une
vue logique du disque permettant de :
Faire abstraction des propriétés physiques des dispositifs
de stockage.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
9 / 64 Système de fichier
Disque dur
Système de gestion de fichier
Le système de gestion de fichier a pour rôle de :
Stocker les fichiers sur un disque (répartition dans les
différents blocs) ;
Structurer de manière hiérarchique l’ensemble des fichiers
(répertoires) ;
Permettre de créer, modifier ou supprimer un fichier ;
Permettre de modifier la hiérarchie des fichiers.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
10 / 64 Système de fichier
Fichiers
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
11 / 64 Système de fichier
Fichiers
Définition
Definition
Un fichier est un ensemble d’informations réunies sous un
même nom et enregistrées sur un support de stockage à long
terme.
Ils permettent :
Le stockage des informations calculées par un processus
lorsqu’il se termine ;
Le stockage des informations de grande taille ;
L’accès de plusieurs processus à ces informations.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
12 / 64 Système de fichier
Fichiers
Hétérogénéité des informations
Exemple d’informations à stocker :
Fichier de données (vidéo, image, base de données, etc).
Fichier texte : caractères organisés en lignes/pages.
Fichier source : fichier texte constitué de routines et de
fonctions reconnaissables par un compilateur.
Fichier exécutable : séquence de segments de code que le
chargeur peut amener en mémoire et exécuter.
Fichier = une séquence de bits, octets, dont le sens est défini
par une convention entre le créateur et l’utilisateur.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
13 / 64 Système de fichier
Fichiers
Nommage
Un fichier est nommé pour notre commodité.
Le nom est généralement une chaîne de caractères ;
Le nom peut contenir une extension indiquant son type ;
Certains OS font une différence entre majuscules et
minuscules.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
14 / 64 Système de fichier
Fichiers
Attributs
Les attributs varient selon les systèmes de gestion de
fichiers.
Type (si le système supporte différents types de fichiers) ;
Emplacement : pointe sur le fichier ;
Taille : taille courante du fichier (octets, mots ou blocs) ;
Droits d’accès : qui peut lire, écrire, exécuter, etc ;
Date et heure de création, dernière modification, dernière
utilisation...
Ces informations sont généralement rangées dans la
structure de répertoire qui réside également sur le support.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
15 / 64 Système de fichier
Fichiers
Types de fichiers
UNIX
- : ordinaire (texte, binaire, exécutable, . . . )
d : répertoire (directory )
c : fichier périphérique (device) de type caractère
b : fichier périphérique (device) de type bloc
s : socket
l : lien (link )
p : tube (pipe) nommé
I Ne retenir que les deux premiers.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
16 / 64 Système de fichier
Fichiers
UNIX : liens
Un fichier est en fait une place sur le disque dur, référencée par
un numéro, l’inode (voir plus loin).
lien dur (hard link )
autre nom pour un fichier
un lien de ce type peut être détruit sans affecter les autres
dès qu’un fichier n’a plus de liens, il est détruit
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
17 / 64 Système de fichier
Fichiers
UNIX : liens
lien symbolique (soft link )
c’est un pointeur sur un fichier
si l’original est détruit, le lien persiste mais ne fonctionne
plus
un lien sur un répertoire doit être un lien symbolique
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
18 / 64 Système de fichier
Fichiers
Opérations sur les fichiers
Créer un fichier :
Trouver de la place dans le système de fichiers ;
Créer une entrée dans le répertoire le contenant ;
L’entrée du répertoire mémorise le nom du fichier et son
emplacement.
Écrire dans un fichier :
Rechercher le répertoire contenant le fichier ;
Rechercher l’emplacement du fichier sur le disque (à partir
des informations contenues dans le répertoire) ;
Maintenir un pointeur d’écriture vers l’emplacement dans le
fichier où l’écriture suivante aura lieu ;
Actualiser le pointeur à chaque écriture.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
19 / 64 Système de fichier
Fichiers
Opérations sur les fichiers (2)
Lire dans un fichier :
Rechercher le fichier (retrouver le répertoire puis
l’emplacement disque)
Placer l’information à lire en mémoire ;
Maintenir un pointeur de lecture vers l’emplacement où la
lecture suivante doit avoir lieu ;
Actualiser le pointeur à chaque lecture.
Détruire un fichier :
Rechercher le fichier ;
Libérer tout l’espace disque occupé par ce fichier ;
Supprimer l’entrée dans le répertoire.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
20 / 64 Système de fichier
Fichiers
Méthode d’accès
Accès séquentiel
Le plus simple
Tout ajout d’information s’effectue à la fin du fichier et met à
jour le pointeur de fin de fichier
I Autres méthodes plus complexes : accès direct (notion de
bloc), accès indexé (tables de clefs).
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
21 / 64 Système de fichier
Fichiers
Allocation disque
Allocation contiguë de l’espace disque
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
22 / 64 Système de fichier
Fichiers
Allocation disque
Allocation chaînée
I Algo pour ajouter un bloc ?
I D’autres stratégies existent (allocation indexée).
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
23 / 64 Système de fichier
Répertoires
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
24 / 64 Système de fichier
Répertoires
Définition
Definition
Un répertoire est une liste de descriptions de fichiers.
Objectif :
Stockage de milliers de fichiers ;
Organisation des données.
Mise en œuvre :
Un répertoire mémorise les noms, attributs et
emplacements sur le disque des fichiers ;
Un répertoire est le plus souvent lui-même un fichier ;
Les répertoires peuvent en général contenir d’autres
répertoires, formant ainsi une structure arborescente.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
25 / 64 Système de fichier
Répertoires
Structuration à un niveau
Structure la plus simple. Tous les fichiers se trouvent dans
le même répertoire
Tous les fichiers doivent avoir des noms uniques
Problème évident en cas de plusieurs usagers.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
26 / 64 Système de fichier
Répertoires
Structuration arborescente
Généralisation permettant aux utilisateurs de créer leurs
propres sous-répertoires et d’organiser leurs données ;
Chaque fichier possède un chemin d’accès unique ;
Un répertoire (ou sous-répertoire) contient un ensemble de
fichiers ou de sous-répertoire ;
Il existe des primitives spéciales de création et de
destruction de répertoire (mkdir, rmdir, . . . )
La destruction passe généralement par le "vidage"
préalable du répertoire.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
27 / 64 Système de fichier
Répertoires
Exemple d’arborescence - Rappel
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
28 / 64 Système de fichier
Répertoires
Chemin de fichiers et répertoires
Chemin absolu d’un fichier ;
Nom "complet" du fichier = chemin d’accès depuis la
racine. Exemple, sous Unix : /rep2/fic1.c ou sous DOS :
\rep2\fic1.c
Répertoire de travail (répertoire courant) ;
Répertoire sur lequel un utilisateur est positionné à un
moment donné. Ce répertoire est nommé “.”
Chemin relatif d’un fichier ;
Référence d’un fichier à partir du répertoire de travail ;
Répertoire personnel (sous Unix) ;
Répertoire sur lequel est positionné un utilisateur suite à
son authentification.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
29 / 64 Système de fichier
Répertoires
Chemins : exemple
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
30 / 64 Système de fichier
Répertoires
Chemins : exemple (2)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
31 / 64 Système de fichier
Répertoires
Chemins : exemple (3)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
32 / 64 Système de fichier
Répertoires
Chemins : exemple (4)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
33 / 64 Système de fichier
Répertoires
Opérations sur les répertoires
Les opérations de base sur les répertoires sont :
Rechercher un fichier : trouver l’emplacement d’un fichier
appartenant à ce répertoire (appelé une entrée du
répertoire) ;
Créer un fichier : créer une nouvelle entrée dans le
répertoire ;
Détruire un fichier : éliminer une entrée dans le répertoire ;
Renommer un fichier : changer le nom de l’entrée dans le
répertoire.
I cf cours “ligne de commande”.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
34 / 64 Système de fichier
Répertoires
Disques dans l’arborescence
Sous Unix
Pas de disque dans les chemins ;
Un arbre unique de répertoires, de racine "/" ;
Disques vus comme des fichiers spéciaux ;
Contenu d’un fichier disque présenté sous forme
d’arborescence dans un répertoire donné par la
commande mount.
l a u r e @ s o r l i n : ~ $ d f −k
Filesystem
1K−b l o c k s
Used A v a i l a b l e Use% Mounted on
/ dev / sda3
226322844 20330896 194488692 10% /
none
4
0
4
0% / sys / f s / cgroup
udev
4020328
4
4020324
1% / dev
tmpfs
805976
916
805060
1% / run
none
5120
0
5120
0% / run / l o c k
none
4029864
484
4029380
1% / run / shm
none
102400
36
102364
1% / run / user
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
35 / 64 Système de fichier
Répertoires
Disques dans l’arborescence
Sous Windows
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
36 / 64 Système de fichier
Répertoires
UNIX : principaux répertoires
/ : la racine
bin : commandes binaires utilisateurs essentielles
boot : fichiers statiques du chargeur de lancement
dev : fichiers de périphériques
etc : configuration système de la machine
home : répertoires personnels des usagers
lib : bibliothèques partagées essentielles
mnt : point de montage temporaire
proc : fichiers virtuels d’information du noyau et des
processus
root : répertoire personnel de root
sbin : binaires systèmes
tmp : fichiers temporaires
usr : deuxième section majeure du système
var : contient des fichiers de données variables
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
37 / 64 Système de fichier
Répertoires
UNIX : principaux répertoires
/bin :
les principales commandes du système pour tous les
utilisateurs
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
38 / 64 Système de fichier
Répertoires
UNIX : principaux répertoires
/boot :
contient tout pour le démarrage, sauf les fichiers de
configuration
/dev :
contient tous les fichiers spéciaux, liens entre le logiciel et
les périphériques.
exemples :
fd* : floppy disk
sd* : SCSI disk
tty* : terminaux
hd* : hard disk
mt* : magnetic disk
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
39 / 64 Système de fichier
Répertoires
Partitionnement des disques
Niveau de structuration supplémentaire ;
Une partition est une zone contiguë de secteurs ;
Il y a une table des partitions en tête du disque ;
Permet des systèmes de fichiers différents sur un même
disque ;
C’est parfois obligatoire :
Disques de grande capacité ;
Partitions pour la zone de va-et-vient avec la mémoire
(swap) ;
Différents systèmes d’exploitation.
C’est parfois utile :
Limiter l’espace alloué ;
Partition en lecture seule.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
40 / 64 Système de fichier
Répertoires
Partitionnement des disques
Exemple de partitionnement (Linux)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
41 / 64 Système de fichier
Droits d’accès
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
42 / 64 Système de fichier
Droits d’accès
Un système de fichiers fournit un mécanisme de gestion des
droits d’accès, qui permet :
De connaître le propriétaire d’un fichier/répertoire
De “sécuriser” l’accès aux fichiers (vie privée).
I Voir le cours sur les droits pour l’utilisation sous Unix.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
43 / 64 Système de fichier
Systèmes de fichier
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
44 / 64 Système de fichier
Systèmes de fichier
ext2fs (extended 2 File System)
Exemple : Le système de fichier ext2/ext3, un des systèmes
supportés par Linux. Autres : FAT16, FAT32, . . .
Système utilisé par Linux
Propriétés :
Attributs de protection
Noms de fichiers longs
Distinction entre majuscules et minuscules
Taille maximum de 4 To
Structure basée sur les inodes
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
45 / 64 Système de fichier
Systèmes de fichier
Structure générale
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
46 / 64 Système de fichier
Systèmes de fichier
Structure d’un inode
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
47 / 64 Système de fichier
Systèmes de fichier
Taille maximum d’un fichier
Si on considère des blocs de 1 Ko et qu’une adresse de
bloc occupe 4 octets, chaque bloc d’indirection peut
comporter 256 adresses
Simple indirection :
256 blocs de 1 Ko soit un fichier de 256 Ko maximum
Double indirection :
256 blocs de 256 adresses de blocs de 1 Ko = 64 Mo
Triple indirection :
256 blocs pointant sur 256 adresses de 256 adresses de 1
Ko soit un fichier de 16 Go de taille maximum
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
48 / 64 Système de fichier
Systèmes de fichier
Répertoires
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
49 / 64 Système de fichier
Systèmes de fichier
Résumé de cette partie
Un système d’exploitation (SE) fournit des mécanismes
pour les fichiers (accès au disque, création, stockage)
appelé Système de Fichiers. Le système de fichiers
cache à l’utilisateur les accès physiques au disque dur
(DD), au CDROM, à une clef USB.
Le système de fichier ext2/ext3, utilisé pour les DD sous
Linux, permet d’avoir accès à une arborescence de fichiers
et de répertoires. La structure de base est l’inode, qui
permet de stocker les informations nécessaires (taille,
dates de modification, . . . )
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
50 / 64 Programmation C : manipulation de fichiers
1
Système de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
51 / 64 Programmation C : manipulation de fichiers
Intro
Objet : manipulation de fichiers en C : ouverture, écriture,
fermeture.
C-POSIX : pour les appels système.
ANSI-C : peu de suppositions sur le système utilisé
dessous. Code plus portable, du coup.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
52 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
53 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Descripteur de fichier
Lors de l’ouverture/création d’un fichier :
Réservation d’une entrée libre dans la table des fichiers
(une entrée = une case de tableau) ;
Copie de l’inode du fichier dans cette entrée ;
Index de l’entrée = descripteur de fichier.
Exemple, à la création d’un processus :
Entrée standard : desc = 0 ;
Sortie standard : desc = 1 ;
Sortie d’erreur : desc = 2.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
54 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Ouverture/création d’un fichier
# include <sys / t y p e s . h>
# include <sys / s t a t . h>
# include < f c n t l . h>
i n t open ( const char ∗pathname , i n t f l a g s ) ;
i n t open ( const char ∗pathname , i n t f l a g s , mode_t mode ) ;
man 2 open ;
Renvoie un descripteur correspondant au fichier pathname ;
Le numéro de descripteur est le prochain numéro libre
(lequel si premier fichier ouvert ?)
Renvoie -1 si échec ;
flags : mode d’ouverture (lecture, écriture, création, etc) ;
mode : droits du fichier créé (si flag de création) ;
Pointeur de lecture/écriture positionné sur 1er caractère ;
Le pointeur avance à chaque lecture/écriture.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
55 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Lecture dans un fichier
# i n c l u d e < u n i s t d . h>
s s i z e _ t read ( i n t fd , void ∗ buf , s i z e _ t count ) ;
Lit dans le fichier correspondant au descripteur fd ;
Lit n caractère à partir de la position actuelle dans le
fichier ;
Les caractères lus sont rangés dans buf ;
Retour :
Nb caractères lus (6 n) ;
0 si fin de fichier atteinte (0 caractères lus) ;
-1 si échec.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
56 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Écriture dans un fichier
s s i z e _ t w r i t e ( i n t fd , const void ∗ buf , s i z e _ t count )
Écrit dans le fichier correspondant au descripteur fd ;
Écrit les count premiers caractères de buf ;
Retour : nombre de caractères écrits (-1 si échec).
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
57 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Fermeture de fichier
# i n c l u d e < u n i s t d . h>
i nt close ( in t fd ) ;
Ferme le fichier correspondant au descripteur ;
NB : Les descripteurs sont automatiquement fermés par la
fonction exit.
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
58 / 64 Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Exemple : my_cp
# include < s t d i o . h>
# include < s t d l i b . h>
# include < f c n t l . h>
# define MAX 1024
i n t main ( i n t argc , char ∗argv [ ] ) {
i n t f1 , f2 , n ;
char b u f [MAX ] ;
i f ( argc ! = 3 ) {
f p r i n t f ( s t d e r r , " e r r e u r parametres \ n " ) ; e x i t ( 1 ) ;
}
i f ( ( f 1 =open ( argv [ 1 ] , O_RDONLY) ) == −1) { /∗ mode lecture ∗/
p e r r o r ( " o u v e r t u r e f i c h i e r source i m p o s s i b l e " ) ; e x i t ( 2 ) ;
}
i f ( ( f 2 =open ( argv [ 2 ] , O_WRONLY| O_CREAT | O_APPEND, S_IRWXU) ) ==−1) { / /700
perror ( " creation f i c h i e r d e s t i n a t a i r e impossible " ) ; e x i t (3) ;
}
while ( ( n = read ( f1 , buf , MAX) ) > 0 ) {
w r i t e ( f2 , buf , n ) ;
}
exit (0) ;
}
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
59 / 64 Programmation C : manipulation de fichiers
Librairie standard C (ANSI C)
1
Système de fichier
Le disque dur
Fichiers
Répertoires
Droits d’accès
Systèmes de fichier
2
Programmation C : manipulation de fichiers
Appels systèmes (C-POSIX)
Librairie standard C (ANSI C)
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
60 / 64 Programmation C : manipulation de fichiers
Librairie standard C (ANSI C)
La librairie stdio.h
Librairie C standard d’entrée/sortie (I/O) ;
Indépendante de l’OS, donc permet un code C portable
(Unix, Windows, etc.) ;
Nombreuses fonctions, plus puissantes que les appels
systèmes ;
Sous Unix, fait appel aux primitives système open, read,
write, etc (surcouche) ;
Les I/O sont “bufferisées” :
Copie des I/O dans un tampon ;
Lecture/écriture du tampon dans le fichier.
Noyau moins sollicité (I/O regroupées) ;
Processus moins synchronisé avec le noyau (si noyau
occupé).
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
61 / 64 Programmation C : manipulation de fichiers
Librairie standard C (ANSI C)
Ouverture de fichier
# include < s t d i o . h>
FILE ∗ fopen ( const char ∗ path , const char ∗mode ) ;
FILE ∗ fdopen ( i n t fd , const char ∗mode ) ;
Valeur de retour : pointeur sur une structure (FILE)
contenant :
Un descripteur de fichier ;
Les opérations autorisées sur le fichier ;
Un buffer d’entrée/sortie.
mode, path : cf open ;
fdopen : “ouverture” à partir d’un numéro de descripteur.
Ne fait pas partie de la norme ANSI !
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
62 / 64 Programmation C : manipulation de fichiers
Librairie standard C (ANSI C)
Quelques fonctions
int fclose (FILE ∗fp)
: fermer un fichier ;
int fprintf (FILE ∗stream, const char ∗format, ...)
: comme printf,
mais dans un fichier ;
int fscanf(FILE ∗stream, const char ∗format, ...)
: comme scanf, mais
dans un fichier ;
int putc(int c, FILE ∗stream)
: écrire un caractère dans un
fichier ;
int getc(FILE ∗stream)
: lire un caractère depuis un fichier ;
int fputs(const char ∗s, FILE ∗stream)
: écrire une chaîne de
caractère dans un fichier ;
char ∗fgets(char ∗s, int size , FILE ∗stream)
: lire une chaîne de
caractère dans un fichier ;
Et bien d’autres...
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
63 / 64 Programmation C : manipulation de fichiers
Librairie standard C (ANSI C)
Exemple
# include < s t d i o . h>
# include < s t d l i b . h>
# define MAX 1024
i n t main ( i n t argc , char ∗argv [ ] ) {
FILE∗ f1 , ∗ f 2 ;
char b u f [MAX ] ;
i f ( argc ! = 3 ) {
f p r i n t f ( s t d e r r , " e r r e u r parametres \ n " ) ; e x i t ( 1 ) ;
}
i f ( ( f 1 =fopen ( argv [ 1 ] , " r " ) ) ==NULL ) { /∗ mode lecture ∗/
p e r r o r ( " o u v e r t u r e f i c h i e r source i m p o s s i b l e " ) ; e x i t ( 2 ) ;
}
i f ( ( f 2 =fopen ( argv [ 2 ] , "w" ) ) ==NULL ) { /∗ cr car inexistant ∗/
perror ( " creation f i c h i e r d e s t i n a t a i r e impossible " ) ; e x i t (3) ;
}
f p r i n t f ( f2 , " T h i s f i l e i s a copy o f %s \ n \ n " , argv [ 1 ] ) ;
while ( ( f g e t s ( buf , MAX, f 1 ) ) ! =NULL ) {
f p u t s ( buf , f 2 ) ;
}
exit (0) ;
}
Laure Gonnord (CCI/Univ Lyon1)
SystCCI Cours 4 : fichiers
2013
64 / 64 
Téléchargement