execvp实现shell版本,arg[1] :ls arg[2]: -l arg[3] \n
时间: 2023-08-30 09:06:04 浏览: 41
一个简单的shell命令解释器
5星 · 资源好评率100%
好的,我可以为您解答这个问题。首先,您需要理解`execvp`函数的作用,它可以在当前进程中运行一个新程序。同时,您需要了解Shell是如何解析用户输入的命令,并将其转换为可执行程序以及参数的。在这个问题中,您需要执行`ls -l`这个命令,因此您需要将`ls`作为可执行程序,`-l`和`\n`作为参数传递给它。
下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
// 构建参数数组
char *args[] = { argv[1], argv[2], argv[3], NULL };
// 执行ls命令
execvp(args[0], args);
// 如果execvp返回,则表示失败
perror("execvp");
exit(EXIT_FAILURE);
}
```
这个程序接受三个参数,并将它们作为`ls`命令的参数来执行。注意,我们将参数数组的最后一个元素设置为`NULL`,这是因为`execvp`函数期望参数数组以`NULL`结尾。如果`execvp`函数返回,那么说明执行失败,并打印错误信息。
希望这可以帮助您解决问题。
阅读全文