我尝试ls -l
使用实现命令execvp
。我有代码
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句