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.
| 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;
}