IPC System V : Segment de mémoire partagée
 


Cette technique permet a différents processus de s'échanger des messages. Pour cela ils lisent ou écrivent des données dans une région de mémoire partagée, zone commune de leur espace d'adressage virtuel respectif. Après utilisation, le processus la détache de son espace d'adressage. Il ne peut la détruire que s'il est le dernier processus à lui être attaché et s'il en a le droit. Dans l'exemple suivant il n'y as pas d'échange entre deux processus mais il définit la méthode pour poster un message et comment le récupérer.


Shmget : permet de créer un segment de mémoire partagée avec une taille et les droits sur ce segment. (retourne la clef qui permet d'accéder à ce segment)
Shmwrite : permet de poster un message dans le segment de mémoire partagée a une position donnée et d'une taille donnée.
Shmread : permet de lire dans un segment de mémoire à partir de la position donnée et sur une longueur donnée.

Exemple :

$IPC_PRIVATE = 0;
$IPC_RMID = 0;
$taille = 2000;
$clef = shmget ($IPC_PRIVATE, $taille,0777);
die unless defined $clef;

$message = "Message #1";
shmwrite($clef, $message, 0,60) or die "shwrite:$!";
shmread($clef,$buff,0,60) or die "shmread: $!";

print $buff,"\n";

print "suppression de $clef\n";
shmctl($clef, $IPC_RMID,0) or die "shmctl: $!";