cs_halima
Messages postés8Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention24 mai 2007
-
12 mai 2007 à 11:59
emmatopiak
Messages postés149Date d'inscriptionmercredi 28 mars 2007StatutMembreDernière intervention17 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
emmatopiak
Messages postés149Date d'inscriptionmercredi 28 mars 2007StatutMembreDernière intervention17 mai 20072 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.