Loading

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>

       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 daccè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’en-têtes   système
       <sys/ipc.h> 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.

       Notez que IPC_PRIVATE est du type key_t alors que les autres constantes
       symboliques  sont  des  champs d’indicateurs qui peuvent être regroupés
       avec un OU logique dans une variable de type int.

   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.

       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  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_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)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       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> ».