2016-05-26 8 views
0

は、私はこの変数の変更についてのバックグラウンド機能を通知

out="Hi" 

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

printing & 
sleep 5s 
out="Changed" 

のように見えるのプログラムを持っていると言うことができますので、印刷機能はバックグラウンドで動作し、私はそれが外に行われた変更を見ることができない知っています。私は何が機能するかを伝える効率的な方法が何かを知りたいと思います。私はあなたがtmpファイルでそれを行うことができますが、それは遅くなることを知っています。バックグラウンド関数がサブシェルで実行されている通常の関数と同じ振る舞いをしているのかどうかはわかりません。コードを変更するにはどうすればよいですか?

答えて

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 

だから任意のサブプロセスのためにそれが見えるように/dev/shm

+0

おかげでたくさんのちょうど簡単な質問を自分のout変数を保存します私はこれが正しいのは、ファイルを使用するよりも速く、プログラムで直接アクセスするよりも少し遅いということですか? – TenebrisNocte

+0

@TenebrisNocte RAMにアクセスしている間は速くなければなりません。私は 'echo'と' cat'を呼び出して値を取得/取得する必要があるので、ローカルのスクリプト変数に格納するよりも遅くなると思います – Samuel

+0

あなたにも最後のことをありがとう、ありがとうございます。ちょうど価値? – TenebrisNocte

関連する問題