#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> // définition de la granularité des lectures/écritures #define SIZE 10000 int main(int argc,char *argv[]) { int r; int w; char t[SIZE]; ssize_t lus; r = open("a.data",O_RDONLY); // appel système pour ouvrir un fichier : -1 si échec if (r==-1) { perror("a.data"); exit(1); } // ouverture en écriture et troncature, création si nécessaire, donc spéficification des droits // d'accès qui seront associés au fichier nouvellement créé, ici on demande rw-r--r-- w = open("b.data",O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (w==-1) { close(r); perror("b.data"); exit(1); } while ((lus=read(r,t,SIZE*sizeof(char)))>0) { // lecture de SIZE octets write(w,t,lus); // écriture du nombre d'octets effectivement lus } close(w); // relâchement des ressources close(r); exit(0); // sortie en mode succès! }