2011-11-06 218 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