begin process at 2012 05 28 23:29:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Fichier & Disque

 > 

Creation d'un mini Shell


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Creation d'un mini Shell

samedi 12 mai 2007 à 11:59:38 | Creation d'un mini Shell

halima

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
samedi 12 mai 2007 à 13:54:06 | Re : Creation d'un mini Shell

emmatopiak

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.


Cette discussion est classée dans : fin, programme, shell, commande, mini


Répondre à ce message

Sujets en rapport avec ce message

fopen() et shell_notifyicon() [ par CyberP ] 1) J'ai créé un programme qui lit dans un fichier qui est normalement dans le meme répertoire que le programme. Mais lorsque je le lance grâce à un ra Fin du programme en C++? [ par jia2812 ] Salut, au risque de me faire passer pour 1 c... ou pour qqu'1 qui n'a pas assez lu le forum, je commence juste le C++... Voilà, je voulais savoir l'é Problème - system() [ par Tub 95 ] Bonjour à tous,Je voudrais effectuer un petit programme en C qui me présente un menu enfin de lancer à partir de ce menu des application !Pour ceci j' envoyer une commande à l'intérieure du programme sous forme de string [ par oudkaramla ] bonjour tout le monde j'ai un programme qui demande à l'utilisateur d'entrer une commande sur la fenêtre consolesauf que moi je veux le faire à l'inté Programmation Systeme : Shell Linux [ par salvio3223 ] Re bonjour.J'ai une autre ( petite ? ) question à poser.Là encore je pense que cela est possible enfin ...Je voudrai exécuter un programme dans un scr a l'aide!!!!!!programme équivalent a la commande DIR du DOS [ par rouxc ] Ce programme doitpermettre de lister des fichiers en parcourant les sous-répertoires avecquelques options de tri pour la sélection et l'affichage des Recuperation des Parametres passés en ligne de commande [ par fortran ] Bonjour.Voila, dans un programme win32, j'essaye de recuperer le chemin, et nom de mon executable, ainsi que les parametres qui lui ont été passés en Aide crontab [ par Tidam ] Voila j'ai fait un ptit programme et j'aurais besoin qu'il soit lancé en permanence. La solution est evidemment 'crontab' seulement cela lance mon pro executer une commande dos [ par Daimadoshi ] slt tlm, voila je voudrai pendant un programme executer une commande dos. j'ai pensé lancer ma commande avec une ligne dans ce genre mais cela ne semb Créer un mini-serveur socket avec C++BuilderX [ par sabugo ] Bonjour à tous !! Voilà, je redébute en C++, ça fait quelques années que je n'en ai pas fait, et je me suis installé C++BuilderX pour tenter de faire


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales