Tux

Unix : Programmation Système

TD 4 - Les Entrees / Sorties

C. Drocourt
I.U.T. Amiens
drocourt@iut-amiens.fr

Exercice 1 :

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.