Ressources informatiques

Ressources informatiques

Ressources informatiques

Accéder bas niveau au système de fichiers

Une fois ouvert, chaque fichier est identifié dans l'application par un numéro, appelé descripteur.

Liste des fonctions
Ouvrir un fichier Créer un fichier Fermer un fichier
Lire dans un fichier Ecrire dans un fichier

Ouvrir un fichier

Exemple : ouverture d'un fichier en lecture seule

#include <sys/types.h> // pour open()
#include <sys/stat.h> // pour open()
#include <fcntl.h> // pour open()
#include <stdio.h> // pour perror() 
#include <unistd.h> // pour close()
	 
int main() {
 int fd;  // descripteur du fichier essaiopen 

 // Ouvrir le fichier essaiopen en lecture
 fd = open("essaiopen", O_RDONLY);
 if (fd == -1)
 {perror("open"); return -1;}
   
 // Fermer le fichier
 close(fd);  
  
 return 0;
}

Créer un fichier

Exemple : création d'un fichier avec les droits lecture et écriture pour le propriétaire

#include <sys/types.h> // pour open()
#include <sys/stat.h> // pour open()
#include <fcntl.h> // pour open()
#include <stdio.h> // pour perror() 
#include <unistd.h> // pour close()
	 
int main() {
 int fd;  // descripteur du fichier essaiopen 

 // Créer le fichier essaiopen avec les droits 600 : rw- --- ---
 fd = open("essaiopen", O_CREAT | O_WRONLY | O_TRUNC, 0600);
 if (fd == -1)
 {perror("open"); return -1;}
   
 // Fermer le fichier
 close(fd);  
  
 return 0;
}

Fermer un fichier

Exemple

#include <sys/types.h> // pour open()
#include <sys/stat.h> // pour open()
#include <fcntl.h> // pour open()
#include <stdio.h> // pour perror() 
#include <unistd.h> // pour close()

int main() {
 int fd;  // descripteur du fichier essaiopen 

 // Ouvrir le fichier essaiopen en lecture 
 fd = open("essaiopen", O_RDONLY);
 if (fd == -1)
 {perror("open"); return -1;}
   
 // Fermer le fichier
 close(fd );
   
 return 0;
}

Lire dans un fichier

Exemple : lire le premier caractère d'un fichier

#include <sys/types.h> // pour open()
#include <sys/stat.h> // pour open()
#include <fcntl.h> // pour open()
#include <stdio.h> // pour perror() 
#include <unistd.h> // pour close(), read()

int main() {
 int fd;  // descripteur du fichier essaiopen 
 char caractereLu; // caractere lu dans le fichier  
 int nombreCaracteresLus; // nombre de caracteres lus par la fonction read()
   
 // Ouvrir le fichier essaiopen en lecture 
 fd = open("essaiopen", O_RDONLY);
 if (fd == -1)
 {perror("open"); return -1;}

 // Lire le premier caractere du fichier
 nombreCaracteresLus = read(fd, &caractereLu, sizeof(char)); 
 if (nombreCaracteresLus == -1) 
 {perror("read"); close(fd); return -1;} 
   
 // Afficher le caractere lu
 if (nombreCaracteresLus == 1)
 printf("%c", caractereLu);
   
 // Fermer le fichier
 close(fd);  
   
 return 0;
}

Ecrire dans un fichier

Exemple : écrire un caractère dansun fichier

#include <sys/types.h> // pour open()
#include <sys/stat.h> // pour open()
#include <fcntl.h> // pour open()
#include <stdio.h> // pour perror() 
#include <unistd.h> // pour close(), write()

int main() {
 int fd;  // descripteur du fichier essaiopen 
 char caractereAEcrire = 'a'; // caractere a ecrire dans le fichier  
   
 // Ouvrir le fichier essaiopen en écriture
 fd = open("essaiopen", O_WRONLY | O_TRUNC);
 if (fd == -1)
 {perror("open"); return -1;}

 // Ecrire le caractere lu dans le fichier 
 if (write(fd, &caractereAEcrire, sizeof(char)) == -1) 
 {perror("write"); close(fd); return -1;}
 
 // Fermer le fichier
 close(fd);  
   
 return 0;
}