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
.