IPC
Section: Manuel de l administrateur Linux (5) 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 NOM
ipc - Mécanisme Système 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 Système 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
<sys/ipc.h>
inclut les membres suivants :
ushort cuid; /* UID du créateur */ ushort cgid; /* GID du créateur */ ushort uid; /* UID du propriétaire */ ushort gid; /* GID du propriétaire */ ushort 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'en-tête définit également les constantes symboliques suivantes :
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 msquid_ds,
définie dans
<sys/msg.h>,
qui contient les membres suivants :
struct ipc_perm msg_perm; ushort msg_qnum; /* nb messages dans la file */ ushort msg_qbytes; /* octets maxi dans la file */ ushort msg_lspid; /* PID dernier appel msgsnd */ ushort msg_lrpid; /* PID dernier appel msgrcv */ time_t msg_stime; /* heure dernier appel msgsnd */ time_t msg_rtime; /* heure dernier appel msgrcv */ time_t msg_ctime; /* heure dernière modification */
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 ipc_perm sem_perm; time_t sem_otime; /* heure dernière opération */ time_t sem_ctime; /* heure dernière modification */ ushort sem_nsems; /* nb sémaphores dans le jeu */
Un sémaphore est une structure struct sem contenant les membres suivants : ushort semval; /* Valeur du sémaphore */ ushort sempid; /* PID dernière opération */ ushort semncnt; /* Nb proc. en attente incrément semval */ ushort semzcnt; /* Nb proc. en attente de semval = 0 */
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 ipc_perm shm_perm; int shm_segsz; /* taille segment */ ushort shm_cpid; /* PID créateur segment */ ushort shm_lpid; /* PID dernière opération */ short 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 */
VOIR AUSSI
ftok(3),
msgctl(2),
msgget(2),
msgrcv(2),
msgsnd(2),
semctl(2),
semget(2),
semop(2),
shmat(2),
shmctl(2),
shmget(2),
shmdt (2).
TRADUCTION
Christophe Blaess, 1996-2003.
|