Lecture de variables d’environnement globales

J’ai un processus qui est créé par execve () à partir d’un autre programme et un ensemble spécifique d’environnement lui est transmis. Cependant, je devrais lire une variable d’environnement globale qui peut ou non être définie par l’utilisateur en fonction de certains aspects. Par exemple, $ PATH est défini lors de l’appel de execve (), mais si l’utilisateur $LOWMEM=1 ( export LOWMEM=1 ) avant l’exécution du programme, le programme ne fera pas des appels malloc() supérieurs à 1KB .

quand je fais un appel getenv("LOWMEM") depuis le programme, il retourne NULL où j’ai ajouté LOWMEM=1 dans /etc/enviroment et echo $LOWMWM affiche la valeur 1. Mais je ne vois pas l’entrée LOWMEM dans /proc//environ . Alors que j’avais redémarré le système après avoir ajouté l’entrée à /etc/environment .

N’est-il pas possible de lire l’environnement global à partir d’un processus s’exécutant dans un environnement spécifique sans le transmettre explicitement au processus parent?

Il semble très probable que vous effaciez l’entrée pour LOWMEM lors de l’utilisation de execve . Au lieu de cela, il peut être préférable d’appeler setenv pour les nouvelles variables souhaitées, soit dans le parent ou dans l’enfant, puis d’appeler execv .