Chinaunix首页 | 论坛 | 博客
  • 博客访问: 196302
  • 博文数量: 21
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 657
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-05 19:07
文章分类
文章存档

2009年(6)

2008年(15)

我的朋友

分类:

2008-12-11 16:50:46

            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.接收消息
 
 
 
阅读(1654) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~