0

嗨,我正在尝试execvp()**environ变量一起使用来为用户输入的命令找到正确的路径。

问题是我真的不明白如何做到这一点。我知道我可以尝试打开命令文件以检查它们是否存在,但我不明白如何获取我需要从中搜索的路径**environ

4

2 回答 2

0
#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] 中获取单独的路径。

于 2013-03-05T05:57:50.433 回答
0

人执行vp:

execvp() 将复制 shell 在搜索可执行文件时的操作

因此,您不必使用**environ 变量来找到命令的正确路径execvp()为你做。

于 2014-06-04T12:21:59.923 回答