Thread Speichermanagement | Garbage Collection: free in perl (4 answers)
Opened by Gast at 2006-11-12 12:21

topeg
 2006-11-12 16:06
#71660 #71660
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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:
Code: (dl )
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";

View full thread Speichermanagement | Garbage Collection: free in perl