Obtenir les variables d'environnement en utilisant le code C

Ici, j'ai écrit un programme en C qui exécute hi.sh fichier à l'aide de system appel.

Ici, j'ai utilisé . ./hi.sh si je veux exécuter ce script dans le même shell
et puis essayer d'obtenir la variable d'environnement à l'aide de la fonction getenv fonction, mais ici, je suis de sortie différent de ce que j'attendais.

La hi.sh fichier contient

export TEST=10
return

Signifie lorsque j'exécute ce hi.sh fichier à l'aide de l'appel système, son export TEST définit la valeur 10 dans la même coquille.
Après cela, je suis en train d'essayer d'obtenir cette valeur de la variable mais son NULL valeur.

Et si j'exécute ce script manuellement à partir de la console comme . ./hi.sh puis il fonctionne très bien et je reçois 10 valeur de TEST à l'aide de getenv("TEST") fonction.

Code:

#include <stdio.h>
int main()
{
    system(". ./hi.sh");
    char *errcode;
    char *env = "TEST";
    int errCode;    
    errcode = getenv(env);
    printf("Value is = %s\n",errcode);
    if (errcode != NULL) {
        errCode =atoi(errcode);
        printf("Value is = %d\n",errCode);
    }
}

de sortie :

Value is = (null)

Comment puis-je exporter TEST de la variable dans le programme shell? Si system() exécute les commandes dans les différents shell alors comment puis-je utiliser C code de programme pour obtenir une variable d'environnement qui est exporté par le shell appelé à l'aide d'un system() appel?

OriginalL'auteur user1089679 | 2012-04-03