通知有关变量变化的背景功能

时间:2016-05-26 06:51:38

标签: bash

假设我有一个看起来像这样的程序

out="Hi"

printing(){
    while true
    do
         echo "$out"
         sleep 1s
    done
}

printing &
sleep 5s
out="Changed"

因此打印功能在后台运行,我知道它无法看到外部发生的变化。我想知道什么是一种有效的方法来告诉函数有什么东西已经变形了。我知道你可以用tmp文件来做,但它会慢。我不确定背景函数的行为是否与子shell中运行的正常函数相同?我该如何更改我的代码?

1 个答案:

答案 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中,以使其对任何子流程都可见