Rechercher : dans
Par :

Mini shell linux a implementer

Dernière réponse le 14 fév 2009 à 03:38:03 rule111, le 13 fév 2009 à 16:32:34 
 Signaler ce message aux modérateurs

Bonjour,
ce code en c apeller smsh1 permet bien sur avec d'autre code que possede deja permet d'executer des minimes operations d'une shell linux comme:
-presenter un prompt de commande (>).
-preleve et analise la commande en mode de le separer ds ses deux parties.
-execute la commande a travers un processus fils.
ok moi je veux maintenant ajouter des fonctions a ce code pour qu'il fasse plus d'operation plus precisement:
-possibiliter d'accepter plus une commande sur la meme ligne separer par des points virgullles.
-possibiliter d'accepter comme terminale de commande le symbole & pour esecuter la commande en blackground.
-possibiliter de rediriger le stdin (cmd1<fileIn) et le stdout(cmd2>fileOut)
-possibiliter de metre ensemble plus de commande a travers pipelines(cmd1 | cmd2 ).
-gerer les signaux de maniere que smsh1se comporte de la meme maniere que shellutiliser quand il recoit les signaux SIGQUIT et SIGINT.
-implementer les commandes internes cd et pwd.
voici le code :

/* smsh1.c - small-shell version 1
*
version d'une prompt-shell qui execute un parsing
*
de la ligne de commande en une serie de caractere
*
et utilise fork, exec, wait et ignore les signaux
*/


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <signal.h>

#include "smsh.h"


#define DFL_PROMPT "> "


void setup();

void fatal(char *s1, char *s2, int n);


int main()
{
char *cmdline,*prompt,**arglist;

int result;


prompt = DFL_PROMPT;

setup();


while( (cmdline = next_cmd(prompt,stdin)) != NULL ) {

if( (arglist = splitline(cmdline)) != NULL ) {

result = execute(arglist);

free(arglist);
}

free(cmdline);
}

return 0;
}


void setup()

/* scopo: inizializzazione della shell
* ritorna: nulla. chiama fatal() in caso di problemi
*/

{
signal(SIGINT,SIG_IGN);

signal(SIGQUIT,SIG_IGN);
}


void fatal(char *s1, char *s2, int n)
{

fprintf(stderr,"ERROR: %s, %s\n",s1,s2);
exit(n);

}

aider moi svp.
c'est un tp.

Configuration: Windows Vista
Firefox 2.0.0.16

Meilleures réponses pour « mini shell linux a implementer » dans :
[Shell] Accès aux dernières commandes de l'historique VoirLe shell Linux/Unix regorge de fonctionnalités permettant de gagner du temps. Ainsi, il est possible de remonter dans l'historique des dernières commandes grâce aux flèches de navigation en appuyant sur la flèche du haut. Mais il y a moyen...
Sed - Introduction à SED - Part III VoirSED - The Stream EDitor - Part III Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
[Shell] Transferer des fichiers via ssh VoirSSH - Secure SHell Utilisation Informations complémentaires LOGICIELS Sous Linux/Unix Sous Windows Avertissement Utilisation SSH permet d'utiliser des pipelines de commandes, et d'utiliser des tubes d'entrées/sorties comme toute...
Linux - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire le système...
Astuces Linux VoirMonter un lecteur de CD-ROM Pour monter un lecteur de CD-ROM sous Linux il faut se logger en administrateur système, c'est-à-dire avec le login "root". Il suffit ensuite de monter le lecteur, c'est-à-dire "accrocher" le contenu du lecteur de CD...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...

2

Albuferque, le 14 fév 2009 à 02:07:16

Pourquoi tu veux implementer quelque chose comme ci?

C'est pour apprendre?

Je te recommande de voir le "source code" de netcat.

http://netcat.sourceforge.net/

Répondre à Albuferque

3

 rule111, le 14 fév 2009 à 03:38:03

Je veux executer plus de commande que ce que fait celle-ci

Répondre à rule111