GESTION DES FICHIERS C/UNIX



Documents pareils
Programmation système de commandes en C

Cours 6 : Tubes anonymes et nommés

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Le système de gestion des fichiers, les entrées/sorties.

Cours de Système : Gestion de Fichiers

Les processus. Système L3, /39

Programmation impérative

Programmation système I Les entrées/sorties

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Le langage C. Séance n 4

Introduction aux Systèmes et aux Réseaux

Programmation système en C/C++

Gestion des fichiers. Telecom-ParisTech BCI Informatique

TP3 : Manipulation et implantation de systèmes de fichiers 1

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Compression de Données - Algorithme de Huffman Document de Conception

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Unix : Programmation Système

3IS - Système d'exploitation linux - Programmation système

SYSTÈME DE GESTION DE FICHIERS

Algorithmique et Programmation, IMA

Gestion distribuée (par sockets) de banque en Java

TP, première séquence d exercices.

Simulation d un système de paiement par carte bancaire

Les fichiers. Chapitre 4

Les structures. Chapitre 3

Qu'est-ce qu'un processus: Définitions

1 Lecture de fichiers


1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Cours Programmation Système

LEs processus coopèrent souvent pour traiter un même problème. Ces

Flux de données Lecture/Ecriture Fichiers

Arguments d un programme

Structure d un programme

TP : Gestion d une image au format PGM

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

COURS AUTOCAD. Création et utilisation des blocs. b leclerc. ERP Jean Moulin METZ

Programmation C. Apprendre à développer des programmes simples dans le langage C

Structure fonctionnelle d un SGBD

Licence Sciences et Technologies Examen janvier 2010

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Conventions d écriture et outils de mise au point

Introduction à la Programmation Parallèle: MPI

Database Manager Guide de l utilisateur DMAN-FR-01/01/12

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Formation Excel. Introduction Les Bases du Logiciel Le comportement des cellules. Calculs élaborés. Les feuilles de calculs élaborées

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MODE OPERATOIRE CIEL GESTION COMMERCIALE VERSION EVOLUTION BTS PME PMI

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Introduction au langage C

Communication par sockets

LA mémoire principale est le lieu où se trouvent les programmes et les

Initiation à la programmation en Python

Travaux Dirigés n 1 : chaînes de caractères

Cours 14 Les fichiers

Les chaînes de caractères

Cours de Systèmes d Exploitation

Communication Interprocessus

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Projet gestion d'objets dupliqués

Modes Opératoires WinTrans Mai 13 ~ 1 ~

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Bases de programmation. Cours 5. Structurer les données

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Utilisation du client de messagerie Thunderbird

Le prototype de la fonction main()

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Outils pour la pratique

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Premiers Pas en Programmation Objet : les Classes et les Objets

GUIDE D'UTILISATION DU SYSTEME TELEPHONIQUE POLYCOM

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

I. Introduction aux fonctions : les fonctions standards

Service Systèmes et Réseaux

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

Guide d'utilisation du téléphone IP Thomson ST-2030 G

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

V- Manipulations de nombres en binaire

Chapitre 1 : La gestion dynamique de la mémoire

LES REGLEMENTS AVEC SOCIEL.NET DERNIERE MISE A JOUR : le 14 juin 2010

Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau

4. Groupement d objets

Chap III : Les tableaux

PROJET 1 : BASE DE DONNÉES REPARTIES

Architecture d un système d exploitation

Plan du cours. Historique du langage Nouveautés de Java 7

Représentation d un entier en base b

REALISATION d'un. ORDONNANCEUR à ECHEANCES

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Programme d Accès Communautaire / Atelier 4 Initiation à Microsoft Excel PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Encryptions, compression et partitionnement des données

Transcription:

Licence IG Page 1 sur 6 GESTION DES FICHIERS C/UNIX Introduction Deux modes d appel - Par la bibliothèque standard C (appel de haut niveau) - Par appels système (bas niveau) Nécessite les includes suivant : <unistd.h> <sys/types.h> <sys/stat.h> <fcntl.h> Les fichiers sont vus comme des blocs d octets, d ou l utilisation de zone tampon de caractères. Les fichiers sont identifiés par un entier appelé «descripteur de fichier» qui est un type entier. Le système maintient une table des descripteurs en mémoire. Les numéros des descripteurs suivant sont réservés : 0 canal d entrée standard <- 1 canal de sortie standard -> 2 canal de sortie d erreur standard -> Donc le prochain descripteur utilisable pour ouvrir un ficher est 3 Gestion des fichiers : Modification du masque par défaut Int umask (int new_mask) Pose un masque par défaut, le masque par défaut est normalement 022, il est possible de le modifier. Umask (022); Creat( toto,o666); => rw- r-- r 110 110 110 => 666

Licence IG Page 2 sur 6 & 000 010 010 => 022 ========= 110 100 100 => 644 =>rw- r-- r-- Ouvrir un fichier Int open (const char * référence, int mode, mode_t permission) Int open (const char * référence, int mode) Où mode peut prendre les valeurs suivantes : O_RDONLY ouverture en lecture seule O_WRONLY ouverture en écriture seule O_RDWR ouverture en lecture et écriture O_APPEND positionne les données en fin de fichier (mode ajout) O_TRUNC Ramène la longueur du fichier à zéro en supprimant le contenue. O_CREAT Permet de créer un fichier vide O_EXCL combiné avec O_CREAT permet de garantir l exclusivité de l utilisation de la fonction open. Où permission peut prendre les valeurs suivantes : S_IRUSR lecture seule pour l utilisateur S_IWUSR écriture seule pour l utilisateur S_IXUSR Rendre exécutable le fichier pour l utilisateur S_IRGRP lecture pour le groupe S_IWGRP écriture pour le groupe S_IXGRP Exécutable pour le groupe S_IROTH lecture seule pour les autres S_IWOTH écriture pour les autres S_IXOTH Exécutable pour les autres Open renvoie le numéro du descripteur sinon 1 Autre manière de créer un fichier Size_t creat(char * référence, mode_t permission) Idem à open(.) pour les permissions. Lecture dans un fichier

Licence IG Page 3 sur 6 Size_t read (int descripteur, void * buffer, size_t nb_car) Renvoie le nombre de caractères effectivement lus. Ecrire dans un fichier Size_t write(int descripteur, const void * buffer, size_t nb_car) Renvoi le nombre de caractères effectivement écrits. Déplacement dans un fichier Off_t lseek (int descripteur, off_t deplace, int base) SEEK_SET ou 0 : Déplacement effectué à partir du début SEEK_CUR ou 1 : Déplacement effectué à partir de la position courante SEEK_END ou 2 : Déplacement effectué à partir de la fin du fichier Exemple d utilisation : Lseek(df,0,2) Calcul de la taille d un fichier Lseek(df,0,0) Retour au début du fichier Lseek(df,0,1)Retour à la position courante de l index du fichier. Fermeture d un fichier Int close (int descripteur) Renvoi 0 si OK sinon 1 Consulter les droits d accès d un fichier Int access (char * référence, int mode) Permet de tester les droit d un fichier passé en paramètre. Mode peut prendre des valeurs entre : R_OK lecture, W_OK écriture, X_OK exécutable, F_OK le fichier existe? Retourne 0 si OK sinon 1 Modification des droit d accès d un fichier Int chmod(char * référence, int permission) Où permission peut prendre les valeurs suivantes :

Licence IG Page 4 sur 6 S_IRUSR lecture seule pour l utilisateur S_IWUSR écriture seule pour l utilisateur S_IXUSR Rendre exécutable le fichier pour l utilisateur S_IRGRP lecture pour le groupe S_IWGRP écriture pour le groupe S_IXGRP Exécutable pour le groupe S_IROTH lecture seule pour les autres S_IWOTH écriture pour les autres S_IXOTH Exécutable pour les autres Retourne 0 si OK sinon 1 Gestion des répertoires : Créer un répertoire Int mkdir (const char * répertoire, mode_t mode) Où mode peut prendre les valeurs suivantes : S_IRUSR lecture seule pour l utilisateur S_IWUSR écriture seule pour l utilisateur S_IXUSR Rendre exécutable le fichier pour l utilisateur S_IRGRP lecture pour le groupe S_IWGRP écriture pour le groupe S_IXGRP Exécutable pour le groupe S_IROTH lecture seule pour les autres S_IWOTH écriture pour les autres S_IXOTH Exécutable pour les autres Supprimer un répertoire Int rmdir (const char * chemin) Attention un répertoire ne peut être supprimé que si celui ci est vide. Changer de répertoire courant Int chdir(const chr * chemin) Connaître le répertoire courant Char * getcwd(char * tampon, taille_t taille)

Licence IG Page 5 sur 6 Ecrit le nom du répertoire dans tampon, renvoie null si le nom du répertoire dépasse la taille du tampon inscrit dans taille. Duplication des descripteurs et redirection : Int dup (int ancien_desc) renvoie le nouveau descripteur sinon -1 Int dup2 (int ancien_desc, int nouveau_desc) Permet de dupliquer un descripteur de fichier, en offrant un ou plusieurs descripteurs différents, ayant accès au même fichier. L utilité est de faire de la redirection : Exemple : Df=open(«licence.txt»,1) ; (1) Close(0) ; (2) Dfbis=dup(df) ; /* prend le plus petit numéro de descripteur disponible*/ (3) Close (df) ; (4) Etape 1 0 (Stdin) 1 (Stdout) On obtient après ouverture du fichier licence.txt, le numéro de descripteur 3 affecté à celui ci. Etape 2 0 (Stdin) 1 (Stdout) L instruction close(0) permet de fermer définitivement le descripteur 0 (entrée de données par défaut), donc laisse une place libre.

Licence IG Page 6 sur 6 Etape 3 0 (licence.txt) 1 (Stdout) L instruction dup(df) permet d affecter ou dupliquer le descripteur numéro 3 dans la case vide la plus basse, donc la case qui à pour index 0, on affecte donc le descripteur numéro 0 au fichier licence.txt. Etape 4 0 (licence.txt) 1 (stdout) Close (df ) permet de fermer le descripteur 3 et de libérer celui ci. On a donc au final un canal direct entre le clavier et le fichier licence.txt Et tout ce que je tape au clavier est entré directement dans le fichier.