foo
他のアプリケーションで変数を更新する方法は?
$ cat app1.sh
#!/bin/bash
//foo can be changed from the internet, but for example, I give it foo=1
export foo=1
while true
do
echo "$foo+2"
sleep 5
done
2番目のアプリケーションはvarを次のように変更します。
$ cat app2.sh
#!/bin/bash
export foo=$foo+100
unset
wileループは古い値にすることはできず、他のアプリケーションから新しい値を取得することはできません。それでは、または同じものをfoo
使わずにwhileループでfoo varを更新する方法は何ですか?database
file
答え1
Unixは、プログラムが他のプログラムに属するメモリを変更するのを防ぐために、メモリ保護モデルを使用します。
異なるプログラム間でデータを共有するには、プロセス間通信を使用する必要があります。そのような方法のいくつかは次のとおりです。
- ファイルシステムのファイル
- 管路
- FIFO(パイプ変形)
- シグナル
- 共有メモリ
- ソケット
Bashはこれらのうち最初の4つだけを直接サポートしています。