子进程的值必须传递给父进程。我正在使用python的subprocess.Popen
来做这件事,但是父进程的shell中看不到子进程的TEMP_VAR
?
import subprocess
import sys
temp = """variable_val"""
subprocess.Popen('export TEMP_VAR=' + temp + '&& echo $TEMP_VAR', shell=True)
//prints variable_val
subprocess.Popen('echo $TEMP_VAR', shell=True)
//prints empty string
有没有办法在不使用queues
(或)Popen - stdout/stdin
关键字args的情况下进行进程间通信。
答案 0 :(得分:1)
环境变量从父级复制到子级,不会在另一个方向上共享或复制它们。所有export
都会在子项中创建一个环境变量,因此其子项将会看到它。
最简单的方法是在子进程中echo
(我假设它是一个shell脚本)并使用管道在python中捕获它。
的Python:
import subprocess
proc = subprocess.Popen(['bash', 'gash.sh'], stdout=subprocess.PIPE)
output = proc.communicate()[0]
print "output:", output
Bash(gash.sh):
TEMP_VAR='yellow world'
echo -n "$TEMP_VAR"
输出:
output: yellow world