如何将NULL附加到字符串指针数组的末尾?

时间:2015-09-08 00:24:44

标签: c string malloc execvp

我正在尝试使用execvp来执行带有给定标志的unix命令。

我的数组argv可能包含以下元素:

{"ls", "-a"}

然后我将此数组传递给

execvp(argv[0], argv);

如何安全地将 NULL 附加到argv数组的末尾,以便execvp知道在哪里终止?

1 个答案:

答案 0 :(得分:1)

您的数组中有2个元素。只需分配三个元素,并将最后一个元素设置为NULL:

char* args[] = {"ls", "-a", NULL};
execvp(path, args);

或者,因为你提到malloc()

char** args = malloc(3 * sizeof args[0]);
args[0] = "ls";
args[1] = "-a";
args[2] = NULL;
execvp(path, args);
free(args);