.\" t .\" Copyright (C) 2006 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SEM_OVERVIEW 7 "13 mai 2012" Linux "Manuel du programmeur Linux" .SH NOM sem_overview \- Panorama des sémaphores POSIX .SH 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 (\fBsem_post\fP(3)), ou décrémenter la valeur du sémaphore de 1 (\fBsem_wait\fP(3)). Si la valeur courante est 0, une opération \fBsem_wait\fP(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. .TP \fBSémaphores nommés\fP .\" glibc allows the initial slash to be omitted, and makes .\" multiple initial slashes equivalent to a single slash. .\" This differs from the implementation of POSIX message queues. .\" glibc allows subdirectory components in the name, in which .\" case the subdirectory tree must exist under /dev/shm, and .\" the fist subdirectory component must exist as the name .\" sem.name, and all of the subdirectory components must allow the .\" required permissions if a user wants to create a semaphore .\" object in a subdirectory. Un sémaphore nommé est identifié par un nom de la forme \fI/un_nom\fP\ ; c'est\-à\-dire un chaîne terminée par un caractère nul pouvant avoir jusqu'à \fBNAME_MAX\fP\fI\-4\fP\ (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 à \fBsem_open\fP(3). La fonction \fBsem_open\fP(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 \fBsem_post\fP(3) et \fBsem_wait\fP(3). Lorsqu'un processus a fini d'utiliser le sémaphore, il peut utiliser \fBsem_close\fP(3) pour le fermer. Lorsque tous les processus ont terminé de l'utiliser, il peut être supprimé du système avec \fBsem_unlink\fP(3). .TP \fBSémaphores anonymes (sémaphores en mémoire)\fP 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 (\fIsémaphore partagé par des threads\fP) ou processus (\fIsémaphore partagé par des processus\fP). 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 \fBshmget\fP(2), ou un objet de mémoire partagée POSIX créé avec \fBshm_open\fP(3)). Avant son utilisation, un sémaphore anonyme doit être initialisé avec \fBsem_init\fP(3). Il peut ensuite être utilisé avec \fBsem_post\fP(3) et \fBsem_wait\fP(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 \fBsem_destroy\fP(3). .PP Le reste de cette section décrit certains détails spécifiques à l'implémentation Linux des sémaphores POSIX. .SS 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. .SS Persistance Les sémaphores POSIX nommés sont persistants dans le noyau\ : s'il n'est pas supprimé avec \fBsem_unlink\fP(3) un sémaphore existe tant que le système n'est pas éteint. .SS "Édition des liens" Les programmes utilisant l'API des sémaphores POSIX doit être compilé avec \fIcc \-pthread\fP pour être lié avec la bibliothèque temps\(hyréel, \fIlibrt\fP. .SS "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 \fI/dev/shm\fP, avec des noms de la forme \fBsem.\fP\fIun_nom\fP (ce qui explique que les noms des sémaphores soient limités à \fBNAME_MAX\fP\fI\-4\fP plutôt qu'à \fBNAME_MAX\fP 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. .SH CONFORMITÉ POSIX.1\-2001. .SH NOTES Les sémaphores System\ V (\fBsemget\fP(2), \fBsemop\fP(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). .SH EXEMPLE Un exemple d'utilisation des diverses fonctions des sémaphores POSIX est donné dans \fBsem_wait\fP(3). .SH "VOIR AUSSI" \fBsem_close\fP(3), \fBsem_destroy\fP(3), \fBsem_getvalue\fP(3), \fBsem_init\fP(3), \fBsem_open\fP(3), \fBsem_post\fP(3), \fBsem_unlink\fP(3), \fBsem_wait\fP(3), \fBpthreads\fP(7) .SH COLOPHON Cette page fait partie de la publication 3.65 du projet \fIman\-pages\fP 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/. .SH TRADUCTION Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a par l'équipe de traduction francophone au sein du projet perkamon . .PP Christophe Blaess (1996-2003), Alain Portal (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian\ (2006-2009). .PP Veuillez signaler toute erreur de traduction en écrivant à ou par un rapport de bogue sur le paquet \fBmanpages\-fr\fR. .PP Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande «\ \fBman\ \-L C\fR \fI
\fR\ \fI\fR\ ».