如何使用execvp实现命令ls -l?

时间:2016-02-27 21:12:05

标签: system-calls execvp

我尝试使用ls -l实现命令execvp。 我有代码

execvp("ls",&argv[0]);  

工作正常,但我使用

execvp("ls -l",&argv[0]);

不起作用

1 个答案:

答案 0 :(得分:0)

execvp()的第一个参数需要是您要运行的二进制名称。你不能在那里添加额外的参数。参数列表来自&argv[0]。您需要创建一个新数组来插入您的参数。像这样:

char** new_args = malloc((argc + 1) * sizeof(char*));
new_args[0] = argv[0];
new_args[1] = "-l";
memcpy(&new_args[2], &argv[1], (argc - 1) * sizeof(char*));
execvp("ls", new_args);