programmation C with system calls and file system

Job ID: 34797166

Budget: $10 – $30 CAD

L'objectif du projet est de développer lcp un utilitaire qui copie des fichiers paresseusement afin de faire moins d'écritures.


Description de l'outil
Usage : lcp [-b TAILLE] SOURCE... DESTINATION
Copie le fichier SOURCE vers le fichier DESTINATION.
Si DESTINATION n'existe pas, il est créé.
Si DESTINATION existe et qu'il est un fichier, il est écrasé.
Si DESTINATION existe et qu'il est un répertoire, les fichiers sources y seront copiés.

Option -b

Spécifie la taille des blocs à utiliser.
Par défaut, la taille est 32 octets (la copie se fait 32 octets à la fois).
TAILLE peut-être aussi grand que le système le permet (plusieurs Go par exemple).

Copie paresseuse
Le programme lcp copie paresseusement. Si les fichiers sources et destinations sont identiques, aucune écriture n'est effectuée.
Si les deux fichiers diffèrent partiellement, seuls les blocs (option -b) qui diffèrent sont réécrits.
Exemple: Soient un fichier source qui contient ABCDEF et un fichier destination qui contient ABCCEF et une taille de blocs de 2. Seul le bloc CD sera copié pour remplacer le bloc CC.
Pour valider si les blocs sont identiques, une fonction fletcher32 vous est fournise dans le fichier checksum.c et doit être utilisée.

Détails d'implémentation
Le but du TP0 est de vous familiariser avec les appels systèmes et la gestion des erreurs.
Pour le traitement des fichiers, vous devrez utiliser stat, open, read, write, lseek et close.
En gros, pas de fopen ni de FILE *.

Code de retour
Le code de retour est 0 si la copie s'est déroulée correctement (dans ce cas-là, le programme n'affiche rien).
En cas d'erreur, 1 est retourné.
Si l'erreur concerne un fichier (n'existe pas, droits, problème physique, etc.), un message d'erreur est affiché sur la sortie d'erreur, préfixé du nom du fichier (avec perror).
Si c'est une autre erreur (option invalide, pas assez de mémoire, etc.) un message d'erreur spécifique est affiché sur la sortie d'erreur (avec fprintf ou perror).
Related categories: C Programming Linux French Translator