1、代码部分
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_INPUT_LENGTH 100
void parse_command(char *command) {
// 用于存储解析后的命令和参数
char cmd[MAX_INPUT_LENGTH];
char args[MAX_INPUT_LENGTH];
// 将输入的命令拷贝到新的字符串中,以便使用strtok
strcpy(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 命令使用了,在终端里面,感觉实现原理都是通过系统调用实现的