Función Perl shmget
Descripción
Esta función devuelve el ID del segmento de memoria compartida para el segmento que coincide con la CLAVE. Se crea un nuevo segmento de memoria compartida de al menos SIZE bytes, siempre que KEY no tenga ya un segmento asociado o que KEY sea igual a la constante IPC_PRIVATE.
Sintaxis
A continuación se muestra la sintaxis simple para esta función:
shmget KEY, SIZE, FLAGS
shmget KEY
Valor devuelto
Esta función devuelve undef en caso de error e ID de memoria compartida en caso de éxito.
Ejemplo
A continuación se muestra el código de ejemplo que muestra su uso básico:
#!/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: $! ";
Escriba un programa lector que recupere el segmento de memoria correspondiente a $ key y lea su contenido usando 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;
Ahora primero ejecute el programa writer.pl en segundo plano y luego reader.pl y luego producirá el siguiente resultado.
$perl writer.pl&
$perl reader.pl
Pennyfrathingale