将PATH环境变量拆分为单个文件路径

时间:2012-05-20 05:37:46

标签: c path environment-variables

我正在尝试将简单的shell作为锻炼给自己。我正在编写一个应该在PATH中找到可执行文件的函数,并返回一个指向字符串的指针,该字符串包含可执行文件的完整路径。这是我到目前为止所拥有的;

/*bunch of includes here*/

/*
 * Find executable in path, return NULL
 * if can't find.
 */
char *find_executable(char *command)
{
    const char *PATH = getenv("PATH");
    DIR *dp;
    /* get each pathname, and try to find executable in there. */
}

int main(int argc,char *argv[])
{ /* nothing intersting here ...*/
}

我想知道如何分离路径的每个部分,并在for循环中处理这些部分。

1 个答案:

答案 0 :(得分:1)

说道路将被分开;
您可以使用strtok函数生成拆分令牌 例如

char *str = "/foo/a1/b1;/bar/a1/b1"

现在你可以使用strtok函数作为

char delims[] = ";"  
char *result = NULL;  
result = strtok( str, delims );  
while( result != NULL ) {  
    dp = result;  
    result = strtok( NULL, delims );   
}