用C/C++构造一个简单的shell
时间: 2024-05-06 10:21:29 浏览: 49
好的,可以的。您可以使用下面的代码作为参考来构造一个简单的shell。
```c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#define MAX_ARGV_LEN 20
void shell(char *cmd) {
// 拆分命令
char *argv[MAX_ARGV_LEN];
int argc = 0;
char *p = strtok(cmd, " ");
while(p != NULL) {
argv[argc++] = p;
p = strtok(NULL, " ");
}
argv[argc] = NULL;
pid_t pid = fork();
if (pid < 0) {
printf("创建子进程失败!\n");
} else if (pid == 0) {
// 子进程执行命令
execvp(argv[0], argv);
exit(0);
} else {
// 父进程等待子进程
waitpid(pid, NULL, 0);
}
}
int main() {
char cmd[256];
while(1) {
printf("shell >");
fgets(cmd, 255, stdin);
if (strcmp(cmd, "exit\n") == 0) {
break;
}
// 去掉命令末尾的换行符
cmd[strlen(cmd) - 1] = '\0';
shell(cmd);
}
return 0;
}
```
该shell可以支持多个参数和重定向等基本功能。您可以自己试一下看看效果如何。如果您有其他问题或需求,可以随时提出。
阅读全文