模仿 Linux 的 shell ,完成具备交互式命令功能的 shell demo 的 C 程序
时间: 2024-10-08 10:16:09 浏览: 50
glisp-shell-demo:golang程序中运行的交互式glisp shell示例
为了创建一个简单的模仿Linux shell的C程序,我们将构建一个基础的命令解释器,允许用户输入并执行一些基本的内置命令。这个例子不会包含所有复杂的系统调用,而是演示了如何处理输入、分割命令以及简单响应。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CMD_LENGTH 50
// 定义几个简单的内置命令示例
void execute_help() {
printf("当前支持的命令有:help\n");
}
void execute_quit() {
printf("退出程序...\n");
exit(0);
}
void execute_echo(const char* cmd) {
printf("命令执行结果:%s\n", cmd);
}
int main() {
char input[MAX_CMD_LENGTH];
while (true) {
printf("$ "); // 显示提示符
fgets(input, MAX_CMD_LENGTH, stdin); // 获取用户输入,去掉换行符
input[strcspn(input, "\n")] = '\0'; // 清理换行符
if (strcmp(input, "help") == 0) {
execute_help();
} else if (strcmp(input, "quit") == 0) {
execute_quit();
} else if (strcmp(input, "echo") == 0) {
execute_echo(input);
} else {
printf("未知命令!请输入 help 查看帮助。\n");
}
}
return 0;
}
```
这个程序会无限循环接收用户的输入,然后根据命令名调用相应的函数。注意,这仅是个简化的版本,实际的shell会更复杂,包括处理命令选项、路径解析、错误处理等。
阅读全文