プロセス間通信を想像してください
+--------------+ +------------+
| 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();
はcallback2 ~ 5 秒ごとに呼び出され、上記で説明したように、このプロセスはノンストップで実行される必要があります。BlackBox を変更できません。
私は欲しい:
- 部分を書く-どこか
processing of $jrefに送る$jrefもの monitoringプロセス自体、実行時にデータを読み取る必要があるもの...
コードは必要ありません。メモリや HDD をいっぱいにすることなく、正しい方向へのポインタが必要なだけです。または、これを行う方法を考えてください。最も簡単な方法は次のとおりです。
- が実行されていないときに HDD がいっぱいになるため、$jref をファイルに書き込むのは適切
monitoringではありません。
誰かが気になる場合$jrefは、json文字列への参照であるため、次のことができます。
use JSON::XS qw(decode_json):
my $perlref = decode_json($$jref);