Fonction shmget Perl

La description

Cette fonction renvoie l'ID de segment de mémoire partagée pour le segment correspondant à KEY. Un nouveau segment de mémoire partagée est créé d'au moins SIZE octets, à condition que KEY ne soit pas déjà associé à un segment ou que KEY soit égal à la constante IPC_PRIVATE.

Syntaxe

Voici la syntaxe simple de cette fonction -

shmget KEY, SIZE, FLAGS

shmget KEY

Valeur de retour

Cette fonction renvoie undef en cas d'échec et l'ID de mémoire partagée en cas de succès.

Exemple

Voici l'exemple de code montrant son utilisation de base -

#!/usr/bin/perl

# Assume this file name is writer.pl

use IPC::SysV;

#use these next two lines if the previous use fails.
eval 'sub IPC_CREAT {0001000}' unless defined &IPC_CREAT;
eval 'sub IPC_RMID {0}'        unless defined &IPC_RMID;

$key  = 12345;
$size = 80;
$message = "Pennyfarthingale.";

# Create the shared memory segment

$id = shmget($key, $size, &IPC_CREAT | 0777 ) or die "Can't shmget: $!";

# Place a string in itl
shmwrite( $id, $message, 0, 80 ) or die "Can't shmwrite: $!";


sleep 20;

# Delete it;

shmctl( $id, &IPC_RMID, 0 ) or die "Can't shmctl: $! ";

Ecrivez un programme de lecture qui récupère le segment mémoire correspondant à $ key et lit son contenu à l'aide de shmread () ;.

#!/usr/bin/perl

# Assume this file name is reader.pl

$key = 12345;
$size = 80;

# Identify the shared memory segment
$id = shmget( $key, $size, 0777 ) or die "Can't shmget: $!";

# Read its contents itno a string
shmread($id, $var, 0, $size) or die "Can't shmread: $!";

print $var;

Maintenant, lancez d'abord le programme writer.pl en arrière-plan, puis reader.pl, puis il produira le résultat suivant.

$perl writer.pl&
$perl reader.pl

Pennyfrathingale