Comment une application peut-elle accéder à la variable d'environnement définie par une autre application?

StackOverflow https://stackoverflow.com/questions/1013383

Autres conseils

Les variables d'environnement sont héritées des processus enfants, mais chaque enfant en reçoit une copie. Si vous modifiez l'environnement du parent par la suite, cela ne sera pas reflété dans l'enfant.

C’est pour des raisons de sécurité: si les variables étaient partagées, les processus pouvaient se visualiser mutuellement, ce qui causerait toutes sortes de problèmes.

La solution consiste donc à définir la variable avant de lancer le nouveau processus.

Si vous devez communiquer avec un processus enfant existant, utilisez un canal.

Chaque application s'exécute avec sa propre copie de l'environnement, de sorte qu'un processus enfant ne peut pas influencer l'environnement du parent. Ceci est vrai jusqu’à CreateProcess où l’environnement est un paramètre d’entrée / facultatif - c’est-à-dire unidirectionnel.

Il existe de nombreux mécanismes IPC disponibles, des canaux nommés aux sockets, en passant par la mémoire partagée vers les fichiers ... la liste est longue.

Mais le suspect que les fichiers vont être le plus facile pour vous.

Vous pourriez demander au processus enfant de créer un fichier contenant les paires nom / valeur souhaitées que l'application appelante pourrait ensuite charger et utiliser. Le format pourrait être quelque chose de base comme:

clé = valeur clé2 = valeur2

un peu plus complexe (mais peut-être plus facile à utiliser) comme XML ... ou tout format personnalisé que vous voulez.

La commande doit être exécutée dans l'environnement du processus en cours. Normalement, bash exécutera tous les processus en tant que processus enfant, auquel une copie en lecture seule de l'environnement du parent sera créée, et créera une nouvelle entrée chaque fois qu'une variable sera modifiée.

Dot (.) est une commande à ne pas confondre avec la spécification du répertoire en cours. La commande point entraîne l'exécution de la commande suivante dans l'environnement du parent. De cette manière, les variables d’environnement du processus sont les variables d’environnement du processus appelant.

scroll top