Loading

NOM

       sem_overview - Panorama des sémaphores POSIX

       Les  sémaphores  POSIX  permettent  aux  processus et aux threads de se
       synchroniser.

       Un sémaphore est un entier dont la valeur ne peut jamais être négative.
       Deux  opérations  peuvent  être  effectuées :  incrémenter la valeur du
       sémaphore de 1 (sem_post(3)), ou décrémenter la valeur du sémaphore  de
       1 (sem_wait(3)). Si la valeur courante est 0, une opération sem_wait(3)
       bloque jusqu’à ce que la valeur devienne strictement positive.

       Les sémaphores POSIX sont de deux types : les sémaphores nommés et  les
       sémaphores anonymes.

       Sémaphores nommés
              Un  sémaphore  nommé  est  identifié  par  un  nom  de  la forme
              /un_nom ; c’est-à-dire un chaîne terminée par un  caractère  nul
              pouvant  avoir  jusqu’à  NAME_MAX-4 (251) caractères, commençant
              par une barre oblique (« / ») suivie  d’un  caractère  ou  plus,
              aucun  de ces derniers n’étant une barre oblique. Deux processus
              peuvent utiliser un même sémaphore nommé en passant le même  nom
              à sem_open(3).

              La  fonction  sem_open(3)  crée un nouveau sémaphore nommé ou en
              ouvre un existant. Après l’ouverture de ce  sémaphore,  il  peut
              être   utilisé   avec   sem_post(3)  et  sem_wait(3).  Lorsqu’un
              processus a fini  d’utiliser  le  sémaphore,  il  peut  utiliser
              sem_close(3)  pour  le  fermer.  Lorsque  tous les processus ont
              terminé de l’utiliser, il peut être  supprimé  du  système  avec
              sem_unlink(3).

       Sémaphores anonymes (sémaphores en mémoire)
              Un  sémaphore  anonyme  n’a  pas  de  nom. Il est placé dans une
              région de la mémoire qui est partagée  entre  plusieurs  threads
              (smaphore  partag  par  des  threads)  ou processus (smaphore
              partag par des processus). Un sémaphore partagé par des threads
              est  placé  dans  une  région  de  la mémoire partagée entre les
              threads d’un processus, par exemple  une  variable  globale.  Un
              sémaphore  partagé  par  des  processus doit être placé dans une
              région de mémoire partagée (par exemple un  segment  de  mémoire
              partagée  System V  créé  avec semget(2), ou un objet de mémoire
              partagée POSIX créé avec shm_open(3)).

              Avant son utilisation, un sémaphore anonyme doit être initialisé
              avec  sem_init(3). Il peut ensuite être utilisé avec sem_post(3)
              et sem_wait(3). Lorsque le sémaphore n’est plus  nécessaire,  et
              avant  que  la  mémoire  où  il  est  placé  ne soit libérée, le
              sémaphore doit être détruit avec sem_destroy(3).

       Le reste  de  cette  section  décrit  certains  détails  spécifiques  à
       l’implémentation Linux des sémaphores POSIX.

   Versions
       Avant  le  noyau  2.6,  Linux  ne proposait que les sémaphores anonymes
       partagés par des threads. Sur un  système  Linux  2.6  avec  une  glibc
       fournissant  l’implémentation  des  threads  NPTL,  une  implémentation
       complète des sémaphores POSIX est fournie.

   Persistance
       Les sémaphores POSIX nommés sont persistants dans le noyau : s’il n’est
       pas supprimé avec sem_unlink(3) un sémaphore existe tant que le système
       n’est pas éteint.

   Édition des liens
       Les programmes utilisant l’API des sémaphores POSIX doit  être  compilé
       avec cc -lrt pour être lié avec la bibliothèque temps‐réel, librt.

   Accéder aux sémaphores nommés par le système de fichiers
       Sous Linux, les sémaphores nommés sont créés sur un système de fichiers
       virtuel, en général monté sur /dev/shm,  avec  des  noms  de  la  forme
       sem.un_nom  (ce qui explique que les noms des sémaphores soient limités
       à NAME_MAX-4 plutôt qu’à NAME_MAX caractères).

       Depuis Linux 2.6.19, il est possible de placer des listes  de  contrôle
       d’accès  sur  les  fichiers  de  ce  répertoire  au  niveau  groupe  et
       utilisateur.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Les sémaphores System V (semget(2), semop(2), etc.)  sont  une  API  de
       sémaphores plus vieille. Les sémaphores POSIX fournissent une interface
       plus simple et mieux conçue que les sémaphores System V.  En  revanche,
       les   sémaphores   POSIX  sont  moins  largement  disponibles  que  les
       sémaphores System V (surtout sur les systèmes plus anciens).

EXEMPLE

       Un exemple d’utilisation des diverses fonctions  des  sémaphores  POSIX
       est donné dans sem_wait(3).

VOIR AUSSI

       sem_close(3),     sem_destroy(3),     sem_getvalue(3),     sem_init(3),
       sem_open(3), sem_post(3), sem_unlink(3), sem_wait(3), pthreads(7)

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