Shell Unix

Ce projet consiste a ecrire un shell Unix simple permettant d’effectuer certaines commandes de bases.
Nous traiterons tout d’abord des commandes simples, et puis des commandes plus complexes (redirections,..etc).
Nous ne traiterons pas les tubes et le ‘&’.
Pour faire executer ces commandes, nous allons utiliser le fichier analex.h que vous trouverez en pieces jointes, ainsi que d’autres bibliotheques necessaires.

Explications

Fonction executer : pid_t executer(int desc0, int desc1, char* argv)
On cree un processus fils avec fork() qui va executer la commande, alors que le processus pere retourne le PID. La fonction executer prend en arguments deux descripteurs desc0 et desc1 qui seront determines par la fonction commande. Ils sont tous initialises au depart a -1 mais apres la fonction commande, l’un d’entre eux va devenir positif (il contient la valeur renvoyee par l’appel de open ). Celui qui change de valeur va mener l’execution de la commande grace a execvp (le tableau argv en argument stocke le contenu de la commande).
On duplique ensuite le descripteur et ferme le fichier pointe par le descripteur.

Fonction commande : TOKEN commande(pid_t* pid)
On declare un tableau argv qui stocke les token au fur et a mesure du deroulement du programme (on suppose que le nombre de token ne depasse jamais 1000). On declare aussi les descripteurs decrits plus haut, ainsi qu’une variable debut qui va nous donner la position sur le tableau argv du token correspondant au debut d’une commande. Cette variable sera surtout utile lorsqu’on traitera les commandes complexes.
Pour une commande quelconque entree au clavier par l’utilisateur, le programme va lire token par token grace a la fonction getToken definie dans le fichier analex.h. Ensuite nous avons des cas differents selon la nature de chaque token.

Leave a Reply

Your email address will not be published. Required fields are marked *