如何使用 execvp 执行命令 ls -l?
how to implement command ls -l using execvp?
我尝试使用 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);
我尝试使用 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);