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.
INGInious