Réussite !

Notes

Erreur

Session expiration Your session is going to expireClick here to extend

 
 
 
 
Budget

Petit budget <800

Posté le

2012-12-20 00:34:07.0

client

win***

Ce projet a expiré

Pourquoi ne pas vous inscrire quand même? Nous sommes certains que vous trouverez des projets similaires parmi les milliers que nous avons à vous proposer!

Publiez un projet similaire dès maintenant

Description du projet :

Unix: Construction d'un mini-shell Il faut réaliser une version simplifiée du programme sh, un des interpréteurs de commande d’UNIX. Le sous-ensemble demandé consiste à gérer le lancement des commandes simples (ex. ls –a) ou complexes (séquence, redirections, arrière-plan, tubes). Exemples: >ls –l;ps >ls –l | wc –l >ps > fich >ls –l | grep java > fich Analyseur lexical Un analyseur lexical est fourni (test.c). Il lit l’entrée standard et décode le texte saisi par l'utilisateur: c'est une suite d'éléments se terminant par le caractère EOF. Un élément est un mot ou une suite de mots (ex pwd, ls -a,…) ou un caractère spécial |&;>< (séparateur: blanc ou caract. spéc.). Une fois que l’utilisateur a entré une ligne de texte, chaque appel successif à la fonction parsing() retourne le type du caractère spécial rencontré (variable symbole) et pour les suite de mots, leur contenu dans eltsCommande[]. Cet analyseur peut être testé après avoir compilé le programme test.c gcc -o analyseur test.c Analyse et exécution d'une commande On traitera d’abord le cas d’une commande simple, par exemple ls -l, puis on ajoutera l’exécution en séquence, l'exécution en arrière-plan, les redirections puis les tubes. On reprendra l'algorithme général d'un interpréteur shell (cf. poly Introduction à Linux), la méthode commande() sera détaillée de la façon suivante: void commande(int fin, int fout, char * com, char * param, int * bg){ // execute une commande int symb; char *mot; pid_t pid; parsing(); switch(symbole){ case 0: // NL case 1: // ; case 2: // & case 3: // < case 4: // > case 5: // | case 7: // EOF case 10: // Mot default: } return; } Le programme principal est constitué d'une boucle ouverte affichant le prompt et lançant la méthode commande() : int main(int argc, char* argv[]) { // creation d'un fichier recuperant les impressions intermediaires (deboggage) printf("DAUPHINE> "); fflush(stdout); while(1){commande();flush(stdout);} return 0; }