Il s’agit d’écrire une nouvelle version de la commande ls -il
avec un affichage plus agréable à lire que celui de la
commande classique.
Exemple d’exécution. $ inoeud plum
Fichier étudié
: plum
Numéro de i-noeud : 1256
Nombre de liens : 2
Propriétaire
: 255 (gaston)
Groupe propriétaire : 125
(gaffeurs)
Type de fichier :
ordinaire
Taille en octets : 1258
Droits d’accès du propriétaire : lecture écriture
Droits d’accès du groupe propriétaire : lecture
Droits d’accès des autres utilisateurs :
Bits spéciaux : set-uid bit non
positionné
set-gid bit non positionné
sticky bit non positionné
Date de dernière modification du i-nœud :
Date de dernière modification du fichier :
Date de dernier accès au
fichier :
$
Contraintes.
Le code de retour. Le code de retour est établi de façon
classique:
0 : tout va bien
1 : problème avec la liste d’arguments
2 : problème plus grave (droits d’accès...)
Les appels systèmes. Les valeurs de retour de ces appels sont
testées et un message d’erreur approprié est
affiché sur stderr avec la fonction de la bibliothèque
standard fprintf. Ces messages seront rédigés de
façon classique, par exemple un échec de la primitive
stat correspondra à: inoeud :
stat: erreur numero xyz
Champ d’application de la commande. Cette nouvelle commande inoeud
n’acceptera qu’un seu1 argument.
Rappelons d’abord qu’au niveau logique un fichier de type catalogue ne
contient qu’une liste de couples (i-nombre, référence)
telle que l’affiche la commande Unix 1s -ia.
Les différentes implémentations d’Unix proposent deux
types d’organisation de ces fichiers catalogues. La norme POSIX propose
une interface pour la consultation du contenu des fichiers de type
catalogue de manière à cacher aux programmeurs les
détails de l’implémentation d’Unix.
Exercice 2 :
Ecrire une commande nommée voir équivalente à la
commande Unix ls -ia.
On utilisera les fonctions opendir, readdir et closedir vues en cours.
Le code de retour de la commande sera égal à:
– 0 si tout s’est bien déroulé,
– 1 si le nombre d’arguments est incorrect,
– 2 si autre problème.
En cas de problème, un message et éventuellement un
numéro d’erreur seront affichés sur stderr à
l’aide de la fonction fprintf.