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