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++.
La compilation sous windows [ par b4n92uid ]
Bonjour tout le monde, je post ici en espérant avoir des réponse clair et satisfaisant voila, je voudrais compiler quelque bibliothèque (DevIL entre
Mise à jour de paramètre [ par justine684 ]
Bonjour! Alors j'ai un problème que je ne sais résoudre. Peu être que quelqu'un pourrait m'aider. Mon but est de référencer les semaines dans une anné
synchronistaion ipod sous linux [ par Richard94 ]
Bonjour, voila, j'essaye depuis un moment de synchroniser mon ipod sous linux, j'ai suivi le tuto ci contre www.geekeries.fr... mais quand je fais:" s
Compiler un programme C++/ Linux sous windows [ par magicientarik ]
Bonjour Qulequ'un peut m'aider svp, je suis vraiment dans la merde, mon programme est developpé en C++ sous linux et je veux le recompiler sous wind
Portabilité [ par Arnauti ]
Bonjour, j'ai réalisé un petit programme sur l'algorithme d'Euclide. Jusque là tout va bien. Cependant, j'ai un probleme de portabilité windows/linux
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010TECHDAYS PARIS 2010 : ADMINISTRATION SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Patrick Guimonet et Benoit Hamet Cette session traitera des différents points exigés durant les taches d'administration : Planification (architecture, hébergement, authentification, .) Opération e...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010[TECHDAYS 2010] #03 - WEB CONTENT MANAGEMENT SOUS SHAREPOINT 2010 par pierre
Stephane Cordonnier de MCNext nous présente les fonctionnalités Web Content Management (WCM) sous SharePoint 2010. Qu'est-ce que le WCM ECM, GED, RM, WCM c'est quoi Plateforme SharePoint Versions SharePoint 2010 SharePoint Fondation...
Cliquez pour lire la suite de l'article par pierre [DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE[DESIGN PATTERNS] PARTIE 2: DIP: DEPENDENCY INVERSION PRINCIPLE par tja
C'est le dernier principe des principes du Design Orienté Objet (The Principles of Object Oriented Design) fondés par Robert C. Martin plus connu sous le pseudonyme d'Uncle Bob.
l'image empruntée de LosTechies.
Je ne traite pas les principes dans...
Cliquez pour lire la suite de l'article par tja TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
CAST DE POINTEURSCAST DE POINTEURS par zaraki21
Cliquez pour lire la suite par zaraki21 CARTE GOOGLECARTE GOOGLE par ja92
Cliquez pour lire la suite par ja92 RE : WIN APIRE : WIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|