2011-11-06 179 views
0

我有这个函数,我试图从路径中删除给定变量的值。问题是,我不知道如何在每次用分号分隔删除最后一个字符串后将环境变量设置为新值。从环境中删除给定变量的值C

例如,如果我的变量是:

WEATHER =热;冷干

成为

WEATHER =热;冷

int remove(char name_Remove[]){ 
    char *value_toRemove = getenv(name_Remove); 
    char *pos = strrchr(value_toRemove, ';'); 

    if(pos) { 
    *pos = 0; 
    return pos-name_Remove; 
    } 
    return 0; 
} 

此外,我已经有一个功能如果这有助于以下形式,则将变量和值添加到环境中:

void add(char name[], char value[]) { 
} 

回答

1

致电setenv应该这样做。这只会更新当前的环境,所以对环境变量的任何更改只会对当前进程生效。

我不认为有可能在父进程(即shell)中更改环境变量而不会从bash中删除进程。

+0

我只是想改变子进程的环境变量值,你可以告诉我如何做到这一点? – Reyko

+0

在这种情况下,使用我展示的setenv调用,链接页面应该给你一个关于如何使用它的体面概念。 – slugonamission