XXXX项目perl使用经验之二(perl访问消息队列)
perl几乎可以作任何事情,只要你选对了模块。本节就是一个例子
使用IPC::SysV和IPC::Msg模块可以方便的访问Unix消息队列
01 #!/usr/bin/perl
02 use strict;
03 use warnings;
04 use IPC::SysV qw(IPC_PRIVATE S_IRWXU S_IRWXG S_IRWXO IPC_CREAT IPC_NOWAIT);
05 use IPC::Msg;
06 my ($key,$msg,$msgtype,$buf);
07 $key = IPC::SysV::ftok("/ocs/home/ocsrun/r5code/etc/queue/QUEUE_M_CUMULATE",1);
08 $msg =new IPC::Msg($key,0666|IPC_CREAT) or die "new fail!";
09 $msgtype = 1;
10 $msg->snd($msgtype,"abc123456",IPC_NOWAIT) or die "snd fail!";
11 $msg->rcv($buf,1024) or die "rcv fail!";
12 print $buf,"\n";
代码解释:
4.使用IPC::SysV模块,qw(IPC_PRIVATE S_IRWXU S_IRWXG S_IRWXO IPC_CREAT IPC_NOWAIT)
等同于("IPC_PRIVATE S_IRWXU S_IRWXG S_IRWXO IPC_CREAT IPC_NOWAIT"),
表示本程序将从该模块引入若干符号,在后续的代码里面需要要指定模块名就可以使用这些符号
5.使用IPC::Msg模块(消息队列)
6.定义私有变量
7.用ftok通过文件名获得一个key值,类似C代码,第4行没有引入ftok,因此必须指定模块名。
8.获得Msg对象。类似msgget函数
9.指定消息类型;
10.发送消息
11.接收消息
阅读(1718) | 评论(0) | 转发(0) |