voilà je suis pas très fort en langage C pourtant je souhaiterai réaliser un programme C qui permet de faire une liste récursive de renseignements tout comme unix avec ls-alR .
voilà je suis pas très fort en langage C pourtant je souhaiterai réaliser un programme C qui permet de faire une liste récursive de renseignements tout comme unix avec ls-alR .
1) C'est pour un cours ?
2) Une liste de renseignements, fort bien, mais tirée de quelle source ? Les fichiers, un annuaire quelquonque ?
3) Je ne connais pas ces fonctions. C'est une bibliothèque existante ou c'est un prototype que l'on t'a imposé ?
4) Pour les erreurs des appels système, tu contrôles la valeur de retour de ces appels et tu apprends à te servir d'un debuggueur.
oui en fait c'était un exercice que j'ai essayé de faire l'an passé mais dont je n'ai jamais trouvé la solution.Car je voudrai l'utiliser par la suite pour mon linux.
L'ennoncé est en anglais désolé
C program that achieves the effect of the unix “ls –alR” command, that is a recursive directory listing.
The program must include the following functions:
- Printtype print the file type ie directory, link etc ;
- Printperm print the permissions mask ;
- Printlink print where the symbolic points to ;
- Printowner print the owner’s name ;
- Printaccess print time of last access ;
You should align the print fields neatly
Print filenames in colour green ordinary files, red for directories, orange for links
All system calls should check for errors
Your code should be readable without the need for comments.
Ok, il s'agit donc de réécrire un programme qui fasse exactement la même chose que « ls -alR ». Déjà, tape la commande dans un terminal pour voir exactement ce que tu es censé obtenir.
Ensuite, il s'agit d'ouvrir un répertoire et d'en lister le contenu. Fais man opendir sous Unix pour ouvrir un directory, et regarde également la liste des fonctions associées en bas de cette page.
R signifie Recursive, et indique que si jamais le répertoire contient un sous-répertoire, alors le contenu de celui-ci doit d'abord être listé avant de traiter le reste, et ainsi de suite. Pour ce faire, tu réentres dans ta fonction, c'est-à-dire que quand tu trouve un sous-rép, tu te rappelles toi-même comme tu l'as fait pour le rép principal. Un nouveau descripteur va être créé, le processus va recommencer au départ, etc. et dès qu'il prendra fin, celui qui était resté en suspens va automatiquement continuer.
Pour les fonctions spécifiées, ce ne sont pas des appels que l'on te fournit, mais que tu dois créer toi-même, puis utiliser au sein de ton programme principal.
Partager