1、代码部分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_INPUT_LENGTH 100void parse_command(char *command) {// 用于存储解析后的命令和参数char cmd[MAX_INPUT_LENGTH];char args[MAX_INPUT_LENGTH];// 将输入的命令拷贝到新的字符串中,以便使用strtokstrcpy(args, command);// 解析命令char *token = strtok(args, " ");if (!token) {printf("无效的命令\n");return;}strcpy(cmd, token);// 解析参数token = strtok(NULL, "");if (token) {printf("命令: %s, 参数: %s\n", cmd, token);} else {printf("命令: %s, 无参数\n", cmd);}// 根据解析后的命令执行相应的操作if (strcmp(cmd, "echo") == 0) {printf("%s\n", token);} else if (strcmp(cmd, "quit") == 0) {exit(0);} else {printf("未知命令: %s\n", cmd);}
}int main() {char input[MAX_INPUT_LENGTH];printf("简单命令解释器 - 输入 'quit' 退出\n");while (1) {// 获取用户输入printf("> ");fgets(input, sizeof(input), stdin);// 移除换行符size_t len = strlen(input);if (len > 0 && input[len - 1] == '\n') {input[len - 1] = '\0';}// 解析并执行命令parse_command(input);}return 0;
}
2、实验结果
3、把可执行文件放到 /bin/test1 就可以像ls 命令使用了,在终端里面,感觉实现原理都是通过系统调用实现的