プロセス間通信を想像してください
+--------------+ +------------+
| main_process | ==produces data somewhat to=> | monitoring |
+--------------+ +------------+
どこ:
- はノンストップで実行
main_process
されており、monitoring
- は
monitoring
時々しか実行されず、実行中はによって生成されたデータを読み取る必要がありますmain_process
- が実行されていない場合、
monitoring
によって生成されたデータmain_process
は保存されません。
問題は、「オンデマンド」IPC のように記述する方法です。
のコードmain_process
は基本的に次のとおりです (実際のコードはもっと複雑です)。
use 5.014;
use warnings;
my $box = new BlackBox( callback => sub {
my ($self, $jref) = @_;
#
# processing of $jref
#
});
$box->run();
はcallback
2 ~ 5 秒ごとに呼び出され、上記で説明したように、このプロセスはノンストップで実行される必要があります。BlackBox を変更できません。
私は欲しい:
- 部分を書く-どこか
processing of $jref
に送る$jref
もの monitoring
プロセス自体、実行時にデータを読み取る必要があるもの...
コードは必要ありません。メモリや HDD をいっぱいにすることなく、正しい方向へのポインタが必要なだけです。または、これを行う方法を考えてください。最も簡単な方法は次のとおりです。
- が実行されていないときに HDD がいっぱいになるため、$jref をファイルに書き込むのは適切
monitoring
ではありません。
誰かが気になる場合$jref
は、json文字列への参照であるため、次のことができます。
use JSON::XS qw(decode_json):
my $perlref = decode_json($$jref);