Provided by: manpages-fr_2.45.1-1_all bug
 

NOM

        sem_overview - Panorama des sémaphores POSIX
 

DESCRIPTION

        Les sémaphores POSIX permettent aux processus et aux threads de se syn‐
        chroniser.
 
        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. 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 Système 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).
    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 four‐
        nissant l’implémentation des threads NPTL, une implémentation  complète
        des sémaphores POSIX est fournie.
 
    Persistence
        Les sémaphores POSIX nommés sont persistants dans le noyau : s’il n’est
        pas supprimé avec sem_unlink() un sémaphore existe tant que le  système
        n’est pas éteint.
 
    Liaison
        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.nom.
 

CONFORMIT

        POSIX.1-2001.
 

NOTES

        Les sémaphores Système 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 Système V. En  revanche,
        les   sémaphores   POSIX  sont  moins  largement  disponibles  que  les
        sémaphores Système 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).
        sem_close(3),     sem_destroy(3),     sem_init(3),     sem_getvalue(3),
        sem_open(3), sem_post(3), sem_unlink(3), sem_wait(3), pthreads(7)
 

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