|
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: $!";
|
|
|