c语言写一个shell 
时间: 2023-05-21 17:02:32 浏览: 39
可以使用系统调用函数来实现一个简单的shell,以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#define MAX_LINE 80 /* 命令行最大长度 */
int main(void)
{
char *args[MAX_LINE/2 + 1]; /* 命令行参数 */
int should_run = 1; /* 控制程序是否继续运行 */
char cmd[MAX_LINE]; /* 存储用户输入的命令 */
while (should_run) {
printf("C知道> ");
fflush(stdout); /* 刷新输出缓冲区 */
/* 读取用户输入的命令 */
fgets(cmd, MAX_LINE, stdin);
cmd[strlen(cmd)-1] = '\0'; /* 去掉换行符 */
/* 解析命令行参数 */
int i = 0;
char *token = strtok(cmd, " ");
while (token != NULL) {
args[i++] = token;
token = strtok(NULL, " ");
}
args[i] = NULL;
/* 创建子进程执行命令 */
pid_t pid = fork();
if (pid < 0) {
fprintf(stderr, "创建子进程失败\n");
exit(1);
} else if (pid == 0) {
/* 子进程 */
execvp(args[0], args);
fprintf(stderr, "无法执行命令\n");
exit(1);
} else {
/* 父进程 */
wait(NULL);
}
}
return 0;
}
```
这个shell可以执行用户输入的命令,并且支持命令行参数。例如,输入`ls -l`可以列出当前目录下的文件和文件夹。
相关推荐














