发一波福利,操作系统的实验内容,大家可以借鉴一下,不过我的代码可能也存在一定的问题。
因为在一开始老师是一节一节课教的,当时并不知道后面还会用输入输出重定向,管道等一系列问题,我的兴趣也不在这个方面也没有预习,所以一来代码写的比较丑,二来没有对于代码进行一个合理的规划,写的也比较乱。
代码暂时实现到输入输出重定向,之后可能会加上管道处理等方面的程序。
如果让我重新写这段代码应该会规划的更好一点吧
/*author:Samsons date:2015.4.10*/ #include <stdio.h> #include <signal.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <fcntl.h> #include <sys/wait.h> #define MAX(100) #define LEN(100) char *arglist[MAX]; //shell指令参数表 int num; //shell指令参数个数 int execute(char* arglist[])//执行外部命令 { int error; error=execvp(arglist[0],arglist); if (error==-1) printf("failed "); exit(1); } char* make(char *buf)//将字符串传入参数表内 { char *cp; cp=malloc(strlen(buf)+1); if (cp==NULL) { fprintf(stderr,"no memory "); exit(1); } strcpy(cp,buf); return cp; } int my_system(char *buf,char *arglist[])//对于字符串进行分割 { int num,j,i,last; char buffer[LEN]; num=0; i=0; while (num<MAX) { if (buf[i]==' ') { arglist[num]=NULL; return num; } if (buf[i]==' ') i++; last=i; while (buf[i]!=' ' && buf[i]!=' ') i++; for (j=last;j<i;j++) buffer[j-last]=buf[j]; buffer[j-last]='