目标:
1.实现简单shell命令,并识别是否带有&(后台执行);
2.实现历史记录功能,并能使用!+num执行第num条命令,!!执行上一条命令。
实现思路:
1.接收命令(字符串),并分割为命令+参数形式:
可以使用库函数strtok()分割,strtok()详情;
使用字符指针数组args存储,注意最后置为NULL
p = strtok(str," ");
while(p){
args[i] = p;
p = strtok(NULL," ");
i++;
}
args[i] = NULL;
这样命令与参数被存入args数组中,其中args[0]为命令,后面为参数。
2.创建while永真循环,通过fork()系统调用创建子进程,fork()使用:fork()简述
如果pid == 0 ,则当前为子进程,使用函数execvp()执行命令,execvp()使用:execvp()简述
pid_t pid = fork();
if(pid == 0){
//in chlid
execvp(args[0</