Mini shell linux a implementer
rule111
Messages postés
3
Statut
Membre
-
rule111 Messages postés 3 Statut Membre -
rule111 Messages postés 3 Statut Membre -
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.
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.
A voir également:
- Mini shell linux a implementer
- Classic shell - Télécharger - Personnalisation
- Opera mini pc - Télécharger - Navigateurs
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- R-linux - Télécharger - Sauvegarde
1 réponse
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/
C'est pour apprendre?
Je te recommande de voir le "source code" de netcat.
http://netcat.sourceforge.net/
rule111
Messages postés
3
Statut
Membre
je veux executer plus de commande que ce que fait celle-ci