完成具备交互式命令功能的 shell demo 的 C 程序
时间: 2024-10-09 12:01:46 浏览: 30
ShellExtGuide4_demo.zip_C shell_DEMO
在C语言中创建一个具备交互式命令功能的shell demo通常涉及到进程控制、输入输出以及命令解析等概念。以下是一个简单的示例,展示了如何使用`fork()`和`execvp()`系统调用来模拟基本的shell环境:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
#define MAX_CMD_LEN 100
void execute_command(char *cmd) {
pid_t child_pid;
int status;
if ((child_pid = fork()) == -1) {
perror("Fork failed");
return;
}
// Child process
if (child_pid == 0) {
execvp(cmd, cmd);
perror("Execvp failed");
exit(1);
} else {
// Parent process
waitpid(child_pid, &status, 0);
printf("Command '%s' executed.\n", cmd);
}
}
int main() {
char command[MAX_CMD_LEN];
while (1) {
printf("> ");
fgets(command, MAX_CMD_LEN, stdin);
// Remove newline character from the end of input
command[strlen(command)-1] = '\0';
// Execute the command
execute_command(command);
}
return 0;
}
```
这个程序会进入一个无限循环,等待用户输入命令行,并通过`fgets()`获取用户的输入。然后它会启动一个新的进程来执行所输入的命令,如果命令执行成功,父进程会打印一条消息表示命令已执行。
阅读全文