write a C program to implement shell framework
时间: 2024-11-18 15:17:14 浏览: 4
编写一个C程序来实现壳(shell)框架通常涉及到构建一个简单的命令解释器,它能够接收用户输入、解析命令并调用相应的函数或执行系统命令。下面是一个简化的例子,展示了如何创建一个基本的命令处理结构:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char* name; // 命令名
void (*execute)(char* args); // 执行函数指针
} Command;
// 示例命令及其执行函数
Command commands[] = {
{"echo", echo},
{"pwd", print_working_dir},
{NULL, NULL}
};
void execute_command(char* cmd) {
char** tokens;
int i;
// 分割输入命令成token数组
tokens = strtok(cmd, " ");
while (tokens != NULL) {
for (i = 0; commands[i].name != NULL; ++i) {
if (strcmp(tokens, commands[i].name) == 0) {
if (commands[i].execute != NULL)
commands[i].execute(tokens);
break;
}
}
// 获取下一个token
tokens = strtok(NULL, " ");
}
}
void echo(char* args) {
printf("Echoing: %s\n", args);
}
void print_working_dir(char* args) {
printf("Current working directory: %s\n", getcwd(NULL, 0));
}
int main() {
char input[1024];
printf("Shell> ");
fgets(input, sizeof(input), stdin);
// 去除fgets结尾的换行符
input[strlen(input)-1] = '\0';
execute_command(input);
return 0;
}
```
这个程序定义了一个命令结构体,并为一些基础命令如`echo`和`pwd`设置了执行函数。`execute_command`函数负责接收用户的输入,然后遍历命令列表查找匹配的命令并执行。
阅读全文