Provided by: manpages-fr_3.65d1p1-1_all bug

NOM

       svipc - Mécanismes System V de communication entre processus

SYNOPSIS

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

       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

       ipcmk(1),   ipcrm(1),   ipcs(1),   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.65 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> ».