table of contents
other languages
other sections
| SVIPC(7) | Manuel du programmeur Linux | SVIPC(7) | 
NOM¶
svipc - Mécanismes System V de communication entre processusSYNOPSIS¶
#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 (IPC : « InterProcess Communication ») : 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 comporte 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 l/e */
};
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ème. 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 :
- 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.
 
Files de messages¶
Une file de message est définie de manière unique par un entier positif (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 de manière unique par un entier positif (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.
 
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 de manière unique par un entier positif (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 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_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)COLOPHON¶
Cette page fait partie de la publication 3.44 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <http://www.kernel.org/doc/man-pages/>.TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>. Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009). Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr. Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».| 31 mai 2012 | Linux |