SVIPC
Section : Manuel de l'administrateur Linux (
7)
Mise à jour de la version anglaise : 1er novembre 1993
Index
Menu principal
NOM
svipc - Mécanismes System V de communication entre processus
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/sem.h>
#include <sys/shm.h>
DESCRIPTION
Cette page de manuel documente l'implémentation sous Linux des
mécanismes System V de communication entre processus :
les files de messages, les ensembles de sémaphores, et les
segments de mémoire partagée.
Par la suite, le mot
ressource
se rapportera à l'un de ces mécanismes.
Autorisations d'accès aux ressources.
Pour chaque ressource, le système utilise une structure commune, de type
struct ipc_perm,
pour enregistrer les informations permettant de déterminer
les autorisations concernant les opérations ipc.
La structure
ipc_perm
définie dans le fichier d'entête système
<sys/ipc.h>
inclut les membres suivants :
struct ipc_perm {
uid_t cuid; /* UID du créateur */
gid_t cgid; /* GID du créateur */
uid_t uid; /* UID du propriétaire */
gid_t gid; /* GID du propriétaire */
unsigned short mode; /* Autorisations r/w */
};
Le membre
mode
de la structure
ipc_perm
définit, sur ses 9 bits de poids faibles, les permissions d'accès
à la ressource, pour un processus effectuant un appel système ipc.
Les permissions sont interprétées ainsi (nombres en octal) :
0400 Lecture par le propriétaire.
0200 Écriture par le propriétaire.
0040 Lecture par le groupe.
0020 Écriture par le groupe.
0004 Lecture par les autres.
0002 Écriture par les autres.
Les bits 0100, 0010 et 0001 (bits exécution) ne sont pas utilisés
par ces appels systèmes.
De plus, « écriture » a la signification « modification »
pour un ensemble de sémaphores.
Le même fichier d'entête définit également
les constantes symboliques suivantes :
- IPC_CREAT
-
Créer une entrée si la clé n'existe pas.
- IPC_EXCL
-
Échouer si la clé existe.
- IPC_NOWAIT
-
Retourner éventuellement une erreur, mais ne pas attendre.
- IPC_PRIVATE
-
Clé privée.
- IPC_RMID
-
Supprimer la ressource.
- IPC_SET
-
Positionner une option concernant la ressource.
- IPC_STAT
-
Obtenir les options concernant la ressource.
Notez que
IPC_PRIVATE
est du type
key_t
alors que les autres constantes symboliques sont des options
que l'on regroupe avec un OU binaire « | » dans une variable de type
int.
Files de messages.
Une file de message est définie par un entier positif unique
(son
msqid)
et dispose d'une structure associée de type
struct msqid_ds,
définie dans
<sys/msg.h>,
qui contient les membres suivants :
struct msqid_ds {
struct ipc_perm msg_perm;
msgqnum_t msg_qnum; /* nb messages dans la file */
msglen_t msg_qbytes; /* octets maxi dans la file */
pid_t msg_lspid; /* PID du dernier appel à msgsnd(2) */
pid_t msg_lrpid; /* PID du dernier appel à msgrcv(2) */
time_t msg_stime; /* heure du dernier appel à msgsnd(2) */
time_t msg_rtime; /* heure du dernier appel à msgrcv(2) */
time_t msg_ctime; /* heure de dernière modification */
};
- msg_perm
-
Structure
ipc_perm
qui indique les permissions d'accès sur la file de messages.
- msg_qnum
-
Nombre de messages actuellement dans la file.
- msg_qbytes
-
Nombre maximal d'octets pour le contenu d'un message de la file.
- msg_lspid
-
PID du processus qui a effectué le dernier appel système
msgsnd(2).
- msg_lrpid
-
PID du processus qui a effectué le dernier appel système
msgrcv(2).
- msg_stime
-
Heure du dernier appel système
msgsnd(2).
- msg_rtime
-
Heure du dernier appel système
msgrcv(2).
- msg_ctime
-
Heure du dernier appel système qui a modifié un membre de la structure
msqid_ds.
Jeux de sémaphores.
Un ensemble de sémaphores est défini par un entier positif unique
(son
semid)
et dispose d'une structure associée de type
struct semid_ds,
définie dans
<sys/sem.h>,
qui contient les membres suivants :
struct semid_ds {
struct ipc_perm sem_perm;
time_t sem_otime; /* heure dernière opération */
time_t sem_ctime; /* heure dernière modification */
unsigned long sem_nsems; /* nb sémaphores dans le jeu */
};
- sem_perm
-
Structure
ipc_perm
qui indique les permissions d'accès sur l'ensemble de sémaphores.
- sem_otime
-
Heure du dernier appel système
semop(2).
- sem_ctime
-
Heure du dernier appel système
semctl(2),
qui a modifié un membre de la structure ci-dessus ou l'état d'un
sémaphore de l'ensemble.
- sem_nsems
-
Nombre de sémaphores dans l'ensemble.
Chaque sémaphore est référencé par un nombre positif ou nul
dans l'intervalle
0
à
sem_nsems-1.
Un sémaphore est une structure de données de type
struct sem
contenant les membres suivants :
struct sem {
int semval; /* Valeur du sémaphore */
int sempid; /* PID de la dernière opération */
};
- semval
-
Valeur du sémaphore : entier positif ou nul.
- sempid
-
PID du dernier processus ayant effectué une opération sur
le sémaphore.
Segments de mémoire partagée.
Un segment de mémoire partagée est défini par un entier positif unique
(son
shmid)
et dispose d'une structure associée de type
struct shmid_ds,
définie dans
<sys/shm.h>,
qui contient les membres suivants :
struct shmid_ds {
struct ipc_perm shm_perm;
size_t shm_segsz; /* Taille du segment */
pid_t shm_cpid; /* PID du créateur */
pid_t shm_lpid; /* PID, dernière opération */
shmatt_t shm_nattch; /* Nombre d'attachements */
time_t shm_atime; /* Heure dernier attachement */
time_t shm_dtime; /* Heure dernier détachement */
time_t shm_ctime; /* Heure dernière modification */
};
- shm_perm
-
Structure
ipc_perm
qui indique les permissions d'accès sur le segment de mémoire partagée.
- shm_segsz
-
Taille en octets du segment.
- shm_cpid
-
PID du processus ayant créé le segment.
- shm_lpid
-
PID du processus ayant effectué le dernier appel système
shmat(2)
ou
shmdt(2).
- shm_nattch
-
Nombre d'attachements en cours pour ce segment.
- shm_atime
-
Heure du dernier appel système
shmat(2).
- shm_dtime
-
Heure du dernier appel système
shmdt(2).
- shm_ctime
-
Heure du dernier appel système
shmctl(2)
qui a modifié la structure
shmid_ds.
VOIR AUSSI
ipc(2),
msgctl(2),
msgget(2),
msgrcv(2),
msgsnd(2),
semctl(2),
semget(2),
semop(2),
shmat(2),
shmctl(2),
shmdt(2),
shmget(2),
ftok(3)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 18 octobre 1996
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 7 svipc ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- Autorisations d'accès aux ressources.
-
- Files de messages.
-
- Jeux de sémaphores.
-
- Segments de mémoire partagée.
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008