我正在尝试使用execvp来执行带有给定标志的unix命令。
我的数组argv可能包含以下元素:
{"ls", "-a"}
然后我将此数组传递给
execvp(argv[0], argv);
如何安全地将 NULL 附加到argv数组的末尾,以便execvp知道在哪里终止?
答案 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);