Changer une variable environnementale via un programme C

Tout le monde sait comment modifier les variables d’environnement Linux via un programme C? Je ne veux pas changer les variables d’environnement copiées pour l’exécution de ce programme. Je veux pouvoir changer sa valeur depuis un programme C et ensuite, lors de l’exécution de la commande ‘env’ sous linux, je peux voir que sa valeur a changé.

Des conseils?

Je ne veux pas changer les variables d’environnement copiées pour l’exécution de ce programme. Je veux pouvoir changer sa valeur depuis un programme C et ensuite, lors de l’exécution de la commande ‘env’ sous Linux, je peux voir que sa valeur a changé

Tu ne peux pas. Vous ne pouvez que modifier l’environnement de votre propre processus . Vous n’avez aucun moyen de jamais toucher l’environnement du parent. En d’autres termes, tout ce que vous faites (définition / suppression des variables d’environnement, modification du répertoire local, etc.) sera invisible pour le processus parent.

La norme indique clairement:

La fonction setenv () doit mettre à jour ou append une variable dans l’environnement du processus appelant .

La seule façon de changer l’environnement du parent est de le faire le faire lui-même.

Voir Fonctions POSIX setenv et putenv .

setenv http://pubs.opengroup.org/onlinepubs/009604599/functions/setenv.html

putenv http://pubs.opengroup.org/onlinepubs/009604599/functions/putenv.html

Comme le dit POSIX, la fonction setenv () est préférable à cette fonction. (putenv)

Je ne veux pas changer les variables d’environnement copiées pour l’exécution de ce programme.

Comme @cnicutar l’a indiqué dans sa réponse, vous ne pouvez modifier la variable d’environnement que pour votre processus actuel et non pour son processus parent ou un autre processus.