Accueil > Forum > > > > Dév un mini-shell en utilisant seulement des processus Linux
Dév un mini-shell en utilisant seulement des processus Linux
dimanche 12 février 2006 à 13:33:27 |
Dév un mini-shell en utilisant seulement des processus Linux

Leila83
|
MES CORDIALES SALUTAIONS A TS LES DEV DE CPPFRANCE.COM ET EN PARTICULIER AUX ADMINS DU SITE...
Chui plantée avec un TP dont le thème est dév un mini-shell sous Linux capable d'exe n'importe kelle cmd Linux(ds un 1er temps, ce minishell ne prend pa en charge des cmd en background ou des cmd exécutées en parallèle).
D'après le prof, le minishell doit répondre à l'algo suivant:
répéter
lire(cmd)
analyser et traiter la cmd
executer la cmd
jusqu'à (cmd=sortir)
Sachant ke je dois dév ce TP avec des processus seulement:
- cmt lire une commande?
- cmt distinguer le mot-clé de la commande de ses arg(s'il y en a)?
Merci d'répondre et chui ouverte à n'importe kelle solution ;-)!
Bonne prog!
|
|
dimanche 12 février 2006 à 14:10:55 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

theneoiceman
|
Pour recupérer les lignes de comande tapées par un utilisateur dans une console en C regarde du coté de la fonction : char * fgets (char * s, int n, FILE * fic) un exemple pour lire le contenu d'une ligne de commande tapée par un utilisateur :
#include <stdio.h> // ... char temp[256]; while(fgets(temp,256,stdin) != NULL) printf(temp);
donc ca c'est pour recupérer la ligne de commande tapée par un utilisateur pendant que ton programme de shell est en exécution.
Ensuite, si tu veux recuperer chaque mot de la ligne de commande utilise la fonction strtok; char * strtok(char* chaine, char * delimiteur);
Sachant que le delimiteur entre chaque mot de la ligne de commande est un espace voivi un exemple d'utilisation avec fgets et strtok en meme temps : #include <stdio.h> #include <string.h> // ... char temp[256]; char tmpstrtok[256]; int i=0;
while(fgets(temp,256,stdin) != NULL)
{ while(tmpstrtok=strtok(i==0?temp:NULL," ")) // delimiteur ==> espace { printf("%s\n",tmpstrtok); i++; } } Avec ca tu recuperes chaque mot de la ligne de commande. Voilà
Mess with the best, die like the rest
|
|
dimanche 12 février 2006 à 20:55:46 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

Leila83
|
Slt!
J'te remercie pr ta proposition, ton bout d'code a l'air très utile. Néanmoins, l'énoncé du TP exige ke je fasse appel à la programmation Shell (rien à voir avec la programmation C), dc pa d'include ni de printf...
Bonne prog!
|
|
lundi 13 février 2006 à 01:45:05 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

julienbj
|
Ouais, mais bon, meme pour la programmation shell il te faudra faire des includes. Vive le C Tchao Savon
|
|
lundi 13 février 2006 à 03:28:05 |
Re : Dév un mini-shell en utilisant seulement des processus Linux
|
lundi 13 février 2006 à 03:30:16 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

G0ss3Yn
|
arf...
à la fin c'est :
eval $cmd
et pas eval $date, bien sur ^^
G0ss3Yn... ( Bon coding a tous !)
|
|
mercredi 15 février 2006 à 22:43:51 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

Leila83
|
Slt! D'abord, merci pr vos interventions...ça m'touche ke vous venez en aide à une "développeuse" en détresse ;-) ...néanmoins, ya qqch ki pue :
Sachant ke j'utilise le bash, ya t-il une cmd ki permet de créer un processus? ou bien fo t-il forcément faire appel à la fct fork? si c le cas, je crois ke je donnerai raison à la proposition de "theneoiceman" et j'dois revoir la remarke de "julienbj"...bref, ça sent le C :-(
Bonne prog!
|
|
mercredi 15 février 2006 à 23:03:12 |
Re : Dév un mini-shell en utilisant seulement des processus Linux

G0ss3Yn
|
Sachant que dans les règles de création de processus du shell tu as 3 alternatives :
1 - Le processus enfant prends la main ( ex: [Machin]$ mozilla<entrée> )
2 - Le processus enfant s'execute en arriere-plan ( ex: [Machin]$ mozilla &<entrée> )
3 - Le processus enfant dit 'émancipé' ( ex: [Machin]$ mozilla &!<entrée> )
En 1, c'est ce qu'on connait d'habituel...
En 2, le processus enfant est lancé et nous permet quand même
d'interagir avec le processus parent (ton programme dans noter cas).
Seulement, si tu ferme ton programme, tous les processus enfant qu'il
aura lancé seront eux aussi fermé.
En 3, les processus enfants peuvent survivre à la mort du parent, c'est ce qu'il te faut à mon avis...
Voilà, cette méthode alliée à la commande "eval" devrait fonctionner...
J'suis en vacances et j'ai pas de Linux sous la main pour tester donc
tiens nous au courant ;)
G0ss3Yn... ( Bon coding a tous !)
|
|
Cette discussion est classée dans : shell, linux, cmd, mini, dév
Répondre à ce message
Sujets en rapport avec ce message
Shell via socket [ par Stormy ]
J'explique le problème: j'ai un socket serveur en attente de connexion distante. Je veux lui passer des requêtes (stdin) qui concerne un shell sur cm
shell sous linux [gcc] [ par badboy38 ]
Bonsoir, j'aurais besoin de connaitre l'équivalent sous linux de ShellExecute pour mon projet (de cours que je dois rendre mercredi...). Quelle est l
Creation d'un mini Shell [ par 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
récupération d'une chaine saisie sans l'afficher dans un shell sous linux ?? [ par Skysurfeur ]
Bonjour à tous, je dois récupérer une chaine de caractères qui sera tapé par un utilisateur dans un shell sous linux, mais il ne faut pas que celle-ci
controler le shell cmd.exe de machine distante ou il y a serveur [ par dyroj ]
bonjour,je voudrai avoir linvite de commande du serveur que je créer a partir du client.netcat le fait avec loption -e.merci a++.
Mini shell C , pipe Probleme [ par elite182 ]
Bonsoir, je m'adresse a vous car je suis un peu dans une impasse... je dois réaliser un mini shell comme le titre l'indique. Pour cela , bien entendu
Script shell [ par kaka2207 ]
bonjours à tous le monde j'ai un petit projet qu'il s'agit d'ecrire un script shell qui convertit les fichier .qif en fichier html ces deux dernier
mini projet [ par Fatinek ]
Salut , Svp j ai besoin d'un coup de pousse pour mon mini-projet .. Je suis pas troop forte sur Code bloks .. Veuillé m'aider , merci !! contacté mo
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|