linux中execvp实现shell版本,arg[1] :ls arg[2]: -l arg[3] \n
时间: 2023-08-30 13:06:04 浏览: 46
好的,我来为您演示一下如何使用execvp函数在Linux中实现shell版本。
首先,您需要在终端中打开一个新的shell,并将以下代码复制到一个名为"myshell.c"的文件中:
```
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
char *args[] = { argv[1], argv[2], argv[3], NULL };
execvp(args[0], args);
return 0;
}
```
然后,在终端中使用以下命令编译该程序:
```
gcc -o myshell myshell.c
```
接下来,您可以使用以下命令来运行该程序并执行您想要执行的命令:
```
./myshell ls -l \
```
在这个例子中,"ls"是您想要执行的命令,"-l"是选项,"\\"用于将换行符转义,因为我们需要将"-l"和"\n"作为两个参数传递给我们的C程序。
希望这个例子可以帮助您理解如何使用execvp函数在Linux中实现shell版本。
相关问题
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` 后在命令行输出一个换行符。
execvp实现arg[1] :ls arg[2]: -l arg[3] \n,写一个shell脚本
好的,以下是一个使用`execvp`函数实现的简单shell脚本,它将执行`ls -l`命令并在终端中输出结果:
```bash
#!/bin/bash
args=("$@")
execvp ls "${args[@]}"
```
将以上代码保存为`shell.sh`文件,然后在终端中使用以下命令给该脚本添加执行权限:
```
$ chmod +x shell.sh
```
接着使用以下命令运行该脚本并传递参数:
```
$ ./shell.sh -l
```
程序将执行`ls -l`命令并在终端中输出结果。