Creation d'un mini Shell

cs_halima Messages postés 8 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 24 mai 2007 - 12 mai 2007 à 11:59
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 - 12 mai 2007 à 13:54
Bonjour!

Je dois ecrire un programme en C (mini_shell) qui se comporte comme un
Shell.Ce programme doit donner le repertoire courant (getcwd(3)) suivi
de ":" et lire une ligne qui doit etre separé du nom de la commande et
de l'argument.comme symbole de separation on doit utiliser strtok.Cette
commande doit etre generer dans un nouveau processus(fork(2) avec des
corrects arguments donnés (exec(2)).le programme doit a la fin attendre
la fin de l'execution de cette commande (wait(2)) et donner le statut
exit.L'affichage doit se faire de maniere different selon la fin du
processus(s'il se termine lui meme oubien s'il doit attendre un signal)


Est ce que quelqu'un a une idee de comment ca s'ecrit?je ne comprend
pas exactement ce que joit ecrire en fait.j'ai besoin d'un debut
(structure de mon programme) et quelques explication et je ferai le
reste.si posibles des exemples similaires. Merci

1 réponse

emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
12 mai 2007 à 13:54
Salut,

Un shell c'est en fait une boucle infinie du type suivant :

tantque non(fin) faire lire commande
 executer commande
 fintantque

Pour lire la commande c'est pas tres dur, tu utilises strtok par exemple comme tu l'as indiqué et pour executer la commande, tu dois distinguer deux types:

1) les commandes internes au shell (comme "cd" ou "exit")
2) les commandes externes au shell (tous les programmes, comme "ls" et autres)
Les commandes externes au shell sont lancees dans un processus fils et le shell attend la fin de l'execution pour relire la commande suivante, a moins qu'il y ait un "&" a la fin de la commande, mais je te conseille dans un premier temps de ne pas t'occuper de ce "&" et de faire un waitpid(fils)
Là où tu verras d'autres problemes aussi c'est que le shell doit parfois interpreter des arguments,  par exemple les redirections > et < doivent etre gerees dans le shell
- enfin pareil, dans un premier temps ne t'en occupe pas.

Une autruche ne se cuit pas aux petits lardons.
0
Rejoignez-nous