summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2006-05-25 21:49:33 +0300
committerSteve Peters <steve@fisharerojo.org>2006-05-26 15:03:12 +0000
commit7b34eba2950f5b80632d564408e79695e67f8c1f (patch)
tree34ef6c370ee86fbbcd72651e87ddf9ed4c8180f1
parent6e4ef77763b5ee73f945f0e8dfaf84b3a0a7402b (diff)
downloadperl-7b34eba2950f5b80632d564408e79695e67f8c1f.tar.gz
SysV IPC
Message-ID: <4475D20D.9010600@gmail.com> p4raw-id: //depot/perl@28313
-rw-r--r--ext/IPC/SysV/Msg.pm8
-rw-r--r--ext/IPC/SysV/Semaphore.pm8
-rw-r--r--ext/IPC/SysV/SysV.pm15
-rw-r--r--pod/perlipc.pod10
4 files changed, 29 insertions, 12 deletions
diff --git a/ext/IPC/SysV/Msg.pm b/ext/IPC/SysV/Msg.pm
index fadd38f94d..1edff3b2b7 100644
--- a/ext/IPC/SysV/Msg.pm
+++ b/ext/IPC/SysV/Msg.pm
@@ -112,10 +112,10 @@ IPC::Msg - SysV Msg IPC object class
=head1 SYNOPSIS
- use IPC::SysV qw(IPC_PRIVATE S_IRWXU);
+ use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR);
use IPC::Msg;
- $msg = new IPC::Msg(IPC_PRIVATE, S_IRWXU);
+ $msg = new IPC::Msg(IPC_PRIVATE, S_IRUSR | S_IWUSR);
$msg->snd(pack("l! a*",$msgtype,$msg));
@@ -152,7 +152,9 @@ associated with it, and C<I<FLAGS> & IPC_CREAT> is true.
=back
On creation of a new message queue C<FLAGS> is used to set the
-permissions.
+permissions. Be careful not to set any flags that the Sys V
+IPC implementation does not allow: in some systems setting
+execute bits makes the operations fail.
=item id
diff --git a/ext/IPC/SysV/Semaphore.pm b/ext/IPC/SysV/Semaphore.pm
index 94ccf91728..8717a93929 100644
--- a/ext/IPC/SysV/Semaphore.pm
+++ b/ext/IPC/SysV/Semaphore.pm
@@ -154,10 +154,10 @@ IPC::Semaphore - SysV Semaphore IPC object class
=head1 SYNOPSIS
- use IPC::SysV qw(IPC_PRIVATE S_IRWXU IPC_CREAT);
+ use IPC::SysV qw(IPC_PRIVATE S_IRUSR S_IWUSR IPC_CREAT);
use IPC::Semaphore;
- $sem = new IPC::Semaphore(IPC_PRIVATE, 10, S_IRWXU | IPC_CREAT);
+ $sem = new IPC::Semaphore(IPC_PRIVATE, 10, S_IRUSR | S_IWUSR | IPC_CREAT);
$sem->setall( (0) x 10);
@@ -198,7 +198,9 @@ associated with it, and C<I<FLAGS> & IPC_CREAT> is true.
=back
On creation of a new semaphore set C<FLAGS> is used to set the
-permissions.
+permissions. Be careful not to set any flags that the Sys V
+IPC implementation does not allow: in some systems setting
+execute bits makes the operations fail.
=item getall
diff --git a/ext/IPC/SysV/SysV.pm b/ext/IPC/SysV/SysV.pm
index 7645ced9f1..937acd6c0f 100644
--- a/ext/IPC/SysV/SysV.pm
+++ b/ext/IPC/SysV/SysV.pm
@@ -74,7 +74,20 @@ IPC::SysV - SysV IPC constants
C<IPC::SysV> defines and conditionally exports all the constants
defined in your system include files which are needed by the SysV
-IPC calls.
+IPC calls. Common ones include
+
+ IPC_CREATE IPC_EXCL IPC_NOWAIT IPC_PRIVATE IPC_RMID IPC_SET IPC_STAT
+ GETVAL SETVAL GETPID GETNCNT GETZCNT GETALL SETALL
+ SEM_A SEM_R SEM_UNDO
+ SHM_RDONLY SHM_RND SHMLBA
+
+and auxiliary ones
+
+ S_IRUSR S_IWUSR S_IRWXU
+ S_IRGRP S_IWGRP S_IRWXG
+ S_IROTH S_IWOTH S_IRWXO
+
+but your system might have more.
=over 4
diff --git a/pod/perlipc.pod b/pod/perlipc.pod
index a0357e0e56..3de879fc0a 100644
--- a/pod/perlipc.pod
+++ b/pod/perlipc.pod
@@ -309,7 +309,7 @@ There were two things you could do, knowing this: be paranoid or be
pragmatic. The paranoid approach was to do as little as possible in your
signal handler. Set an existing integer variable that already has a
value, and return. This doesn't help you if you're in a slow system call,
-which will just restart. That means you have to C<die> to longjump(3) out
+which will just restart. That means you have to C<die> to longjmp(3) out
of the handler. Even this is a little cavalier for the true paranoiac,
who avoids C<die> in a handler because the system I<is> out to get you.
The pragmatic approach was to say "I know the risks, but prefer the
@@ -1537,10 +1537,10 @@ you weren't wanting it to.
Here's a small example showing shared memory usage.
- use IPC::SysV qw(IPC_PRIVATE IPC_RMID S_IRWXU);
+ use IPC::SysV qw(IPC_PRIVATE IPC_RMID S_IRUSR S_IWUSR);
$size = 2000;
- $id = shmget(IPC_PRIVATE, $size, S_IRWXU) || die "$!";
+ $id = shmget(IPC_PRIVATE, $size, S_IRUSR|S_IWUSR) || die "$!";
print "shm key $id\n";
$message = "Message #1";
@@ -1615,9 +1615,9 @@ which is included with Perl starting from Perl 5.005.
A small example demonstrating SysV message queues:
- use IPC::SysV qw(IPC_PRIVATE IPC_RMID IPC_CREAT S_IRWXU);
+ use IPC::SysV qw(IPC_PRIVATE IPC_RMID IPC_CREAT S_IRUSR S_IWUSR);
- my $id = msgget(IPC_PRIVATE, IPC_CREAT | S_IRWXU);
+ my $id = msgget(IPC_PRIVATE, IPC_CREAT | S_IRUSR | S_IWUSR);
my $sent = "message";
my $type_sent = 1234;