www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

apache-mmap-demo.pl
#!/usr/local/bin/perl -w
# apache-mmap-demo.pl -- Zeigt lokale IPC mit Apache::Mmap.
#                  Schreibt in eine Datei, die mit mmap()
#                  auf eine Speicherregion abgebildet ist.

use Apache::Mmap qw(PROT_READ PROT_WRITE MAP_SHARED);  # CPAN-Modul
use Fcntl;

# Wir verwenden hier nur die TIESCALAR-Schnittstelle.
# Siehe 'man Apache::Mmap' fuer mmap() und munmap().

use constant MMAPFILE  => "/tmp/mmapped-file";
use constant MAXLENGTH => 60;
use constant OFFSET    => 0;

use constant UPDATETIME  => 5;    # So viele Sekunden schlafen
@SIG{qw(INT HUP TERM QUIT)} = ( sub { untie($mymmap); exit 0; } ) x 4;

# Erst erzeugen wir eine Datei einer bestimmten Groesse
unlink(MMAPFILE);
sysopen(FILE, MMAPFILE, O_RDWR | O_CREAT, 0666)
    or die "can't open MMAPFILE: $!\n";
syswrite(FILE, "0123456789" x 7 . "\n");

tie $mymmap, 'Apache::Mmap', *FILE, MAXLENGTH,
    PROT_READ | PROT_WRITE, MAP_SHARED, OFFSET
    or die "can't mmap to MMAPFILE: $!\n";

print "Old: $mymmap\n";
while (1) {
    $ttt = sprintf("Current time: (%d sec. updates) [%s]",
           UPDATETIME, scalar(localtime(time)));
    $mymmap = $ttt;       # Hier wird geschrieben!
    print "New: $ttt\n";
    sleep(UPDATETIME);
}
   

[Prev] [Up] [Relevant Chapter] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:50 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo