只用c语言,不调用其它头文件,写一个实现几个常用命令的shell
时间: 2024-12-01 12:30:06 浏览: 14
解析如何在C语言中调用shell命令的实现方法
在不调用其他头文件的情况下,实现几个常用命令的shell是比较困难的。因为这些命令需要调用系统函数,而这些函数都需要在头文件中声明。但是,我们可以使用一些系统函数来实现一些简单的命令,例如cd、ls、mkdir等。下面是一个简单的例子,可以实现cd、ls、mkdir和rm命令:
```
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
void cd(char *path) {
if (chdir(path) == -1) {
printf("cd: %s: No such file or directory\n", path);
}
}
void ls() {
DIR *dir;
struct dirent *ent;
if ((dir = opendir(".")) != NULL) {
while ((ent = readdir(dir)) != NULL) {
printf("%s\n", ent->d_name);
}
closedir(dir);
} else {
printf("ls: cannot open directory\n");
}
}
void mkdir(char *path) {
if (mkdir(path, 0777) == -1) {
printf("mkdir: %s: Cannot create directory\n", path);
}
}
void rm(char *path) {
if (remove(path) == -1) {
printf("rm: %s: Cannot remove file\n", path);
}
}
int main() {
char command[100];
char arg[100];
while (1) {
printf("> ");
scanf("%s", command);
if (strcmp(command, "cd") == 0) {
scanf("%s", arg);
cd(arg);
} else if (strcmp(command, "ls") == 0) {
ls();
} else if (strcmp(command, "mkdir") == 0) {
scanf("%s", arg);
mkdir(arg);
} else if (strcmp(command, "rm") == 0) {
scanf("%s", arg);
rm(arg);
} else if (strcmp(command, "exit") == 0) {
break;
} else {
printf("Unknown command: %s\n", command);
}
}
return 0;
}
```
这个例子中,我们使用了chdir、opendir、readdir、closedir、mkdir和remove等系统函数来实现cd、ls、mkdir和rm命令。在主函数中,我们使用一个while循环来不断读取用户输入的命令,并根据命令调用相应的函数。当用户输入exit命令时,程序退出。
阅读全文