#python #environment-variables
Вопрос:
У меня есть программа-драйвер, которая запускает и управляет сотнями процессов с помощью
p = subprocess.Popen(cmd)
Одна из ситуаций, с которой я сталкиваюсь, заключается в следующем:
поскольку многие процессы могут настраивать свою собственную переменную среды с помощью
os.environ[key] = val
которые могут исчезнуть после завершения процесса.
Мой вопрос таков: поскольку некоторые из них могут выйти из строя, я хочу воспроизвести их локально, поэтому мне нужны переменные среды для правильного пути if-else.
Есть ли в python способ получить переменные env из подпроцесса?
Комментарии:
1. Нет. Если у вас есть способ идентифицировать каждый процесс, вы можете сделать так, чтобы подпроцесс сбросил свою среду в файл.
2. Переменные среды являются локальными для процесса. Они исчезают, когда программа, которая их устанавливает, и ее дети выходят. Это всегда так, по замыслу.
Ответ №1:
которые могут исчезнуть после завершения процесса
Это должно быть «которое исчезнет». В модели процессов UNIX переменные env являются частными для каждого процесса. Если вы работаете в Linux, у вас может возникнуть соблазн попробовать прочитать /proc/$pid/environ. Это, однако, было бы неверно, поскольку в нем перечислены только переменные, которые присутствовали при создании процесса. Он не будет включать в себя какие-либо изменения, внесенные процессом в его собственные переменные env.
Короче говоря, невозможно сделать то, что вы хотите, без явного сотрудничества дочернего процесса.