add extension to support SysV IPC
[p5sagit/p5-mst-13.2.git] / t / op / ipcmsg.t
CommitLineData
9b599b2a 1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
7
9b599b2a 8use Config;
9b599b2a 9
10BEGIN {
11 unless($Config{'d_msgget'} eq 'define' &&
12 $Config{'d_msgctl'} eq 'define' &&
13 $Config{'d_msgsnd'} eq 'define' &&
14 $Config{'d_msgrcv'} eq 'define') {
55d729e4 15 print "1..0\n";
9b599b2a 16 exit;
17 }
9b599b2a 18}
19
20use strict;
21
0ade1984 22use IPC::SysV qw(IPC_PRIVATE IPC_NOWAIT IPC_STAT IPC_RMID
23 S_IRWXU S_IRWXG S_IRWXO);
24
9b599b2a 25print "1..6\n";
26
0ade1984 27my $msg = msgget(IPC_PRIVATE, S_IRWXU | S_IRWXG | S_IRWXO);
ce5ffdc7 28# Very first time called after machine is booted value may be 0
29die "msgget failed: $!\n" unless defined($msg) && $msg >= 0;
9b599b2a 30
31print "ok 1\n";
32
33#Putting a message on the queue
34my $msgtype = 1;
35my $msgtext = "hello";
36
37msgsnd($msg,pack("L a*",$msgtype,$msgtext),0) or print "not ";
38print "ok 2\n";
39
40my $data;
0ade1984 41msgctl($msg,IPC_STAT,$data) or print "not ";
9b599b2a 42print "ok 3\n";
43
44print "not " unless length($data);
45print "ok 4\n";
46
47my $msgbuf;
0ade1984 48msgrcv($msg,$msgbuf,256,0,IPC_NOWAIT) or print "not ";
9b599b2a 49print "ok 5\n";
50
51my($rmsgtype,$rmsgtext) = unpack("L a*",$msgbuf);
52
53print "not " unless($rmsgtype == $msgtype && $rmsgtext eq $msgtext);
54print "ok 6\n";
55
0ade1984 56msgctl($msg,IPC_RMID,0);
9b599b2a 57