shell使用execvp实现,arg[1] :ls arg[2]: -l arg[3] \n
时间: 2023-09-20 21:08:12 浏览: 48
好的,您可以使用以下代码来实现:
```c
#include <stdio.h>
#include <unistd.h>
int main() {
char *args[] = {"ls", "-l", "\n", NULL};
execvp(args[0], args);
return 0;
}
```
这里我们定义了一个字符指针数组 `args`,存储了要执行的命令及其参数。然后使用 `execvp` 函数来执行这个命令,其中第一个参数是要执行的命令名,第二个参数是参数列表,必须以 NULL 结尾。在这个例子中,`ls` 命令的参数是 `-l` 和 `\n`,表示要列出文件的详细信息并输出一个换行符。
注意,当调用 `execvp` 函数时,当前进程会被替换成新的进程,因此在执行 `execvp` 函数后的代码将不会得到执行。如果 `execvp` 函数返回了,说明执行失败了,可以根据 `errno` 来查看错误原因。
相关问题
编写一个shell脚本,使用execvp 实现arg[1] :ls arg[2]: -l arg[3] \n
好的,您可以编写一个名为 `myls.sh` 的 shell 脚本文件,内容如下:
```
#!/bin/bash
args=("ls" "-l")
execvp "ls" args
```
上述代码中,我们首先声明了一个数组 args,其中 args[0] 为 "ls",args[1] 为 "-l"。接着使用 execvp 函数来执行 ls 命令,第一个参数为命令名,第二个参数为参数数组。
接下来,需要给脚本文件添加可执行权限,可以执行以下命令:
```
chmod +x myls.sh
```
最后,您可以在命令行中运行该脚本,执行以下命令:
```
./myls.sh
```
运行后,您应该会看到当前目录下的文件列表以及详细信息。
execvp实现shell版本,arg[1] :ls arg[2]: -l arg[3] \n
好的,可以使用以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
fprintf(stderr, "Usage: %s command [arg1] [arg2] ...\n", argv[0]);
exit(EXIT_FAILURE);
}
if (execvp(argv[1], &argv[1]) == -1) {
perror("execvp failed");
exit(EXIT_FAILURE);
}
return 0;
}
```
在命令行中运行该程序时,需要指定要执行的命令及其参数,例如:
```
./myshell ls -l '\n'
```
其中,`ls` 是要执行的命令,`-l` 是其参数,`'\n'` 是为了在执行完 `ls -l` 后在命令行输出一个换行符。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)