我尝试使用ls -l
实现命令execvp
。
我有代码
execvp("ls",&argv[0]);
工作正常,但我使用
execvp("ls -l",&argv[0]);
不起作用
答案 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);