假设我有一个看起来像这样的程序
out="Hi"
printing(){
while true
do
echo "$out"
sleep 1s
done
}
printing &
sleep 5s
out="Changed"
因此打印功能在后台运行,我知道它无法看到外部发生的变化。我想知道什么是一种有效的方法来告诉函数有什么东西已经变形了。我知道你可以用tmp文件来做,但它会慢。我不确定背景函数的行为是否与子shell中运行的正常函数相同?我该如何更改我的代码?
答案 0 :(得分:0)
您可以使用linux共享内存在那里存储全局变量:
echo "True" > /dev/shm/state # will store value "True" in `state` variable in shared memory
cat /dev/shm/state # will read value from `state` variable
只需将out
变量存储在/dev/shm
中,以使其对任何子流程都可见