setenv() в c не добавляет мой пользовательский каталог bin

Я хотел бы добавить свой файл /myBin/bin, внутри которого есть исполняемый файл, в переменную среды PATH, чтобы я мог использовать execvp() их.

setenv() не добавляет мой каталог в PATH, что мне не хватает?

Спасибо

#include <stdlib.h>
#include <limits.h>
#include <string.h>
#include <stdio.h>

int main(void){
    char binDir[PATH_MAX+1];
    strcpy(binDir,"~/myBin/bin");
    char pathDir[PATH_MAX+1];
    strcpy(pathDir,"PATH");

    printf("Variable d'environnement (%s)\n\n\n", getenv("PATH"));
    setenv(pathDir,binDir,0);
    printf("Variable d'environnement (%s)\n", getenv("PATH"));
    return 0;
}

person Gregory    schedule 29.04.2017    source источник


Ответы (1)


Вы установили последний аргумент setenv равным 0, в соответствии с документацией setenv «если перезапись равна нулю, то значение имени не изменяется», вы можете попробовать передать 1 в качестве аргумента перезаписи для setenv

person Pras    schedule 29.04.2017
comment
С 1 в качестве параметра он удаляет все остальные переменные в PATH, а затем добавляет мою папку. Как я могу просто добавить папку в конец PATH, не удаляя там существующие переменные? @Прас - person Gregory; 29.04.2017
comment
Вы можете сначала получить getenv, извлечь существующий путь, затем добавить к нему новый путь, а затем установить этот путь, используя setenv - person Pras; 29.04.2017