Du brauchst kein C um mit shared Memory umgehen zu können, das kennt Perl von sich aus. Du findest unter cpan einige module dazu, die aber für deine speziellen Ziele zu überdimensioniert sind. Mach es doch einfach so:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
use IPC::SysV qw(IPC_PRIVATE S_IRWXU IPC_RMID);
my $maxbuf=1024; #Bite
my $startpos=0;
# Shared Memory reservieren:
my $key=shmget(IPC_PRIVATE, $maxbuf, S_IRWXU) or die "Konnte kein SHM bekommen ($!)\n";
# etwas rein schreiben:
my $wrt="TEST!";
shmwrite($key, $wrt, $startpos, $maxbuf) or die "Konnte in SHM nicht schreiben ($!)\n";
print "GESCHRIEBEN: $wrt\n";
# und wieder auslesen:
my $rd;
shmread($key, $rd, $startpos, $maxbuf) or die "Konnte in SHM nicht lesen ($!)\n";
print "GELESEN: $rd\n";
# den Shared Memory wieder frei geben:
shmctl($key, IPC_RMID, 0) or die "Konnte SHM nicht frei geben ($!)\n";