Provided by: manpages-fr_4.26.0-1_all bug

NOM

       sem_overview - Panorama des sémaphores POSIX

DESCRIPTION

       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 une 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 (sémaphore partagé par des threads) ou processus  (sémaphore  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 shmget(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  Linux 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.

   Liaison
       Les programmes utilisant l'API des sémaphores POSIX doivent être compilés avec cc -pthread pour être liés
       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.

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

EXEMPLES

       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), shm_overview(7)

TRADUCTION

       La   traduction   française   de   cette   page   de   manuel   a   été   créée   par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,  François  Micaux,  Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,      Thomas      Huriaux      <thomas.huriaux@gmail.com>,     Nicolas     François
       <nicolas.francois@centraliens.net>,    Florentin    Duneau    <fduneau@gmail.com>,     Simon     Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier   <barbier@debian.org>   et   David   Prévot
       <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                    sem_overview(7)