0
我尝试使用execvp
来执行命令ls -l
。 我有代码如何使用execvp实现命令ls -l?
execvp("ls",&argv[0]);
工作不错,但我用
execvp("ls -l",&argv[0]);
不起作用
我尝试使用execvp
来执行命令ls -l
。 我有代码如何使用execvp实现命令ls -l?
execvp("ls",&argv[0]);
工作不错,但我用
execvp("ls -l",&argv[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);