Función Perl shmwrite
Descripción
Esta función escribe STRING desde la posición POS para SIZE bytes en el segmento de memoria compartida especificado por ID. El TAMAÑO es mayor que la longitud de STRING. shmwrite agrega bytes nulos para completar en bytes de TAMAÑO.
Sintaxis
A continuación se muestra la sintaxis simple para esta función:
shmwrite ID, STRING, POS, SIZE
Valor devuelto
Esta función devuelve 0 en caso de error y 1 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
$key = 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, &OPC_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