execvp实现shell版本,arg[1] :ls arg[2]: -l arg[3] \n
时间: 2023-09-23 08:12:08 浏览: 49
好的,以下是实现 `execvp` 的 Shell 版本代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define MAX_COMMAND_LENGTH 1024
int main(int argc, char *argv[]) {
char command[MAX_COMMAND_LENGTH];
// 拼接命令行参数
strcpy(command, argv[1]);
for (int i = 2; i < argc; i++) {
strcat(command, " ");
strcat(command, argv[i]);
}
strcat(command, "\n");
// 执行命令
if (system(command) == -1) {
perror("system failed");
exit(EXIT_FAILURE);
}
return 0;
}
```
使用 `system` 函数可以直接执行一个命令,无需使用 `execvp` 函数。在代码中,我们先将传入的命令行参数拼接成一个命令字符串,然后使用 `system` 函数执行该命令。注意在命令末尾加上一个换行符 `\n`,以便在执行完命令后输出一个换行符。
在命令行中运行该程序时,需要指定要执行的命令及其参数,例如:
```
./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)
![](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)
![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)