嗨,我正在尝试execvp()
与**environ
变量一起使用来为用户输入的命令找到正确的路径。
问题是我真的不明白如何做到这一点。我知道我可以尝试打开命令文件以检查它们是否存在,但我不明白如何获取我需要从中搜索的路径**environ
。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *start, *end;
char ch;
char* path = getenv("PATH");
if (!path) {
fprintf(stderr, "could not get $PATH, exiting\n");
exit(EXIT_FAILURE);
}
start = path;
do {
end = strchr(start, ':');
if (!end) {
printf("%s\n", start);
} else {
ch = *end;
*end = '\0';
printf("%s\n", start);
*end = ch;
}
start = end + 1;
} while (end != NULL);
return 0;
}
这个小程序演示了如何从 env[PATH] 中获取单独的路径。
人执行vp:
execvp() 将复制 shell 在搜索可执行文件时的操作
因此,您不必使用**environ 变量来找到命令的正确路径;execvp()
为你做。