简单实现一个可以支持外部命令的shell:
/***************************** *功能:实现一个简单的shell *终端:./shell * 可以输入pwd等外部命令测试 * **************************/ /*******包含头文件********/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <string.h> #include <glob.h> /*******提取DELIMS分隔符*******/ #define DELIMS " " /********创建命令结构体(方便扩展)**********/ struct cmd_st { glob_t globres ; }; /********打印终端的提示*********/ static void prompt(void) { printf("mysh-0.1$ "); } /*********************************** *功能:解析终端输入的命令行 * 参数:line:从终端获取的命令行 * res:解析的命令行(回填) * ********************************/ static void parse(char *line,struct cmd_st *res) { char *tok ; int i = 0 ; while(1) { //1.从终端截取命令字符串(line为指向欲分割的字符串,DELIM为分隔符,函数将返回分隔符前面的字符串,tok将指向分隔符之后的字符串) tok = strsep(&line,DELIMS); //2.如果解析失败跳出循环 if(tok == NULL) break ; //3.当多个分割符连续可能出现空串则继续 if(tok[0] == '