#include <stdio.h>
#include <unistd.h>
void show()//程序开始输出与shell一样的命令行
{
char path[256]={0};/创建buf存储当前路径
getcwd(path,sizeof(path));//调用getcwd获得当前路径
printf("linux@ubuntu:%s$ ",path);//存放在缓存区
fflush(stdout); //立即输出缓存区
}
开始界面的设置
总体的所有文件
难点在于对于输入命令的解析,判断。mmmm
#include <string.h>
#include <stdio.h>
#include "show.h"//前面所设置的显示界面头文件
#include "docmd.h"//后面执行命令的头文件
int proccmd()//命令解释函数
{
char cmd[512]={0};//存储用户输入的命令
char* arg[4]={0};//定义指针数组,先分析命令最长不超过四个,所以定义四个指针
while(1)
{
show();
fgets(cmd,sizeof(cmd),stdin);//输入命令比如ls 敲\n
cmd[strlen(cmd)-1]='\0';//去掉\n
arg[0]=strtok(cmd," ");//用strtok函数将输入的命令用空格断开
if(NULL == arg[0])
{
continue;//这是判断如果用户输入的是空格那么跳过此次循环从新开始下一次,相当于又把命
//令行输出一边
}
else
{
break;//如果命令不为空跳出while循环
}
}
arg[1]=strtok(NULL," ");//分别让剩下的三个指针指向分割下来的命令
arg[2]=strtok(NULL," ");
arg[3]=strtok(NULL," ");
int ret = docmd(arg);//调用执行命令函数并且接收一下执行命令函数的返回值,判断是否成功
return ret;
}
命令分解(解释函数)
#include <string.h>
#include "mingling.h"
#include "ll.h"//写的ll命令的头文件
#include "cat.h"//cat头文件
#include "ln.h"
#include "touch.h"//各种命令的头文件
#include "rm.h"
#include "mv.h"
int docmd(char* arg[4])//传入刚才的指针数组
{
if(0 == strcmp("