想象一下进程间通信
+--------------+ +------------+
| 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 秒调用一次,正如我上面所说,这个过程应该不间断地运行。我无法更改黑匣子。
我需要:
- 写
processing of $jref
部分 - 什么应该发送$jref
到某个地方 - 以及
monitoring
进程本身,应该读取数据的内容,运行时...
不需要任何代码,只需要一些指向正确方向的指针,或者知道如何做到这一点,而不会填满我的内存或硬盘,所以最简单的方法:
- 将 $jref 写入文件是不合适
monitoring
的,因为它会在未运行时填满我的硬盘。
如果有人关心,那$jref
是对 json 字符串的引用,所以我可以这样做:
use JSON::XS qw(decode_json):
my $perlref = decode_json($$jref);