如何将 NULL 附加到字符串指针数组的末尾?
How can I append NULL onto the end of a string pointer array?
我正在尝试使用 execvp 执行带有给定标志的 unix 命令。
我的数组 argv 可能包含这些元素:
{"ls", "-a"}
然后我将这个数组传递给
execvp(argv[0], argv);
如何安全地将 NULL 附加到 argv 数组的末尾,以便 execvp 知道在哪里终止?
您的数组中有 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);
我正在尝试使用 execvp 执行带有给定标志的 unix 命令。
我的数组 argv 可能包含这些元素:
{"ls", "-a"}
然后我将这个数组传递给
execvp(argv[0], argv);
如何安全地将 NULL 附加到 argv 数组的末尾,以便 execvp 知道在哪里终止?
您的数组中有 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);