Ecrivez une fonction permettant de copier un fichier quelconque. Votre fonction ne peut bien entendu pas modifier le fichier source.
Vous pouvez uniquement utiliser les fonctions open(2)
, mmap(2)
, munmap(2)
, msync(2)
, ftruncate(3)
, fstat(2)
, memcpy(3)
and close(2)
. Vous ne pouvez appeler memcpy(3)
qu'une seule fois.
Astuce : msync(2) est une fonction qui vous permet de garantir que les modifications faites en mémoire (notamment celles à une adresse pointée par mmap) seront aussi sauvées sur disque. Lisez la documentation pour voir comment l'utiliser correctement.
Astuce : La fonction ftruncate(3) est une fonction que l'on utilise assez rarement, mais elle est nécessaire pour cette question.