else wait(NULL); // ¸¸½ø³Ì exit(0); }
4.3 mini_shell.c
#include
printf(\your-sid****\\n\ //½«your-sid¸ÄΪÄãµÄѧºÅ while(1) {
printf(\ //ÏÔʾÃüÁîÌáʾ·û fgets(cmd, 80, stdin); //´Ó¼üÅ̶ÁÈëÃüÁîÐÐ
cmd[strlen(cmd)-1]=0; //½«ÐÐβ×Ö·ûÖÃΪ×Ö·û´®½áÊø·û0 if ( strcmp(cmd, \ exit(0); //ÄÚ²¿ÃüÁîquit if ( strcmp(cmd, \ pwd(); //ÄÚ²¿ÃüÁîpwd else { //ÍⲿÃüÁî id=fork();
if (id<0) { printf(\ if ( id == 0 ) {
if (execlp(cmd, cmd, NULL)<0) printf(\ exit(2); }
wait(NULL); } } }
void pwd() {
char dir[50]; getcwd(dir,50); printf(\}
4.4 mini_shell.cÑ¡×÷Ò»
#include
printf(\ //½«your-sid¸ÄΪÄãµÄѧºÅ printf(\ getchar(); scanf(\
if(y='n')
printf(\ else if(y='y') printf(\ while(1) {
printf(\ //ÏÔʾÃüÁîÌáʾ·û fgets(cmd, 80, stdin); // ´Ó¼üÅ̶ÁÈëÃüÁîÐÐ
cmd[strlen(cmd)-1]=0; //½«ÐÐβ×Ö·ûÖÃΪ×Ö·û´®½áÊø·û0 cmd1=strtok(cmd,\ cmd2=strtok(NULL,\ cmd3=strtok(NULL,\
if ( strcmp(cmd1, \ exit(0); //ÄÚ²¿ÃüÁîquit if ( strcmp(cmd1, \ pwd(); //ÄÚ²¿ÃüÁîpwd else { //ÍⲿÃüÁî id=fork();
if (id<0) { printf(\ if ( id == 0 ) { if(cmd2!=NULL) { if(cmd3==NULL) {
if (execlp(cmd1, cmd1, cmd2,NULL)<0) printf(\ exit(2); } else {
if (execlp(cmd1, cmd1, cmd2,cmd3,NULL)<0)
printf(\ exit(2); } } else {
if (execlp(cmd1, cmd1,NULL)<0)
printf(\ exit(2); }
}
wait(NULL); } } }
void pwd() {
char dir[50]; getcwd(dir,50); printf(\}
4.5 mini_shell.cÑ¡×÷¶þ
#include