linux下c语言实现shell
时间: 2023-06-05 08:47:52 浏览: 95
在Linux下,可以使用C语言编写一个简单的shell程序。这个程序可以接受用户输入的命令,并执行相应的操作。以下是一个简单的示例程序:
```
#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; /* 控制程序是否继续运行 */
pid_t pid; /* 进程ID */
while (should_run) {
printf("osh> ");
fflush(stdout);
char input[MAX_LINE];
fgets(input, MAX_LINE, stdin);
/* 将输入的命令行分解为参数列表 */
int i = ;
args[i] = strtok(input, " \n");
while (args[i] != NULL) {
i++;
args[i] = strtok(NULL, " \n");
}
/* 如果输入的是exit命令,则退出程序 */
if (strcmp(args[], "exit") == ) {
should_run = ;
continue;
}
/* 创建子进程执行命令 */
pid = fork();
if (pid < ) {
fprintf(stderr, "Fork failed\n");
return 1;
} else if (pid == ) {
/* 子进程 */
execvp(args[], args);
fprintf(stderr, "Command not found\n");
return 1;
} else {
/* 父进程 */
wait(NULL);
}
}
return ;
}
```
这个程序使用了fork()和execvp()函数来创建子进程并执行命令。它还使用了strtok()函数来将输入的命令行分解为参数列表。当用户输入exit命令时,程序会退出。