sem_open - Initialiser et ouvrir un sémaphore nommé
Bibliothèque de threads POSIX (
libpthread,
-lpthread)
#include <fcntl.h> /* Pour les constantes O_* */
#include <sys/stat.h> /* Pour les constantes des modes */
#include <semaphore.h>
sem_t *sem_open(const char *nom, int oflag);
sem_t *sem_open(const char *nom, int oflag,
mode_t mode, unsigned int valeur);
sem_open() crée un nouveau sémaphore POSIX ou en ouvre un
existant. Le sémaphore est identifié par
nom. Pour les
détails de la construction de
nom, consultez
sem_overview(7).
L'argument
oflag spécifie les attributs qui contrôlent la
manière d'opérer de l'appel (les définitions des valeurs
des attributs peuvent être obtenues en incluant
<fcntl.h>). Si
O_CREAT est spécifié dans
oflag, le sémaphore est créé s'il n'existe pas
déjà. Le propriétaire (UID) du sémaphore est l'UID
effectif du processus appelant. Le groupe propriétaire (GID) est le GID
effectif du processus appelant. Si
O_CREAT et
O_EXCL sont tous
les deux spécifiés dans
oflag, une erreur sera
renvoyée si le sémaphore
nom existe déjà.
Si
O_CREAT est spécifié dans
oflag, deux autres
arguments doivent être fournis. L'argument
mode spécifie
les permissions à placer sur le nouveau sémaphore, comme pour
open(2) (les définitions symboliques des bits de permissions
peuvent être obtenues en incluant
<sys/stat.h>). Ces
permissions sont « masquées » avec l'umask
du processus. Les permissions de lecture et d'écriture devraient
être accordées à chaque classe d'utilisateurs qui aura
accès au sémaphore. L'argument
valeur spécifie la
valeur initiale du nouveau sémaphore. Si
O_CREAT est
spécifié et que le sémaphore
nom existe
déjà,
mode et
valeur sont ignorés.
S'il réussit,
sem_open() renvoie l'adresse du nouveau
sémaphore ; cette adresse est utilisée lors de l'appel
des autres fonctions sur les sémaphores. S'il échoue,
sem_open() renvoie
SEM_FAILED et écrit
errno en
conséquence.
- EACCES
- Le sémaphore existe, mais l'appelant n'a pas la
permission de l'ouvrir.
- EEXIST
-
O_CREAT et O_EXCL ont été tous
les deux spécifiés dans oflag, mais un
sémaphore nom existe déjà.
- EINVAL
-
valeur était plus grand que
SEM_VALUE_MAX.
- EINVAL
-
nom consiste en une barre oblique
« / », suivie d'aucun autre
caractère.
- EMFILE
- La limite du nombre de descripteurs de fichiers par
processus a été atteinte.
- ENAMETOOLONG
-
nom est trop long.
- ENFILE
- La limite du nombre total de fichiers ouverts pour le
système entier a été atteinte.
- ENOENT
- L'attribut O_CREAT n'était pas
spécifié dans oflag et aucun sémaphore
nom n'existe ; ou O_CREAT était
spécifié, mais nom n'était pas correctement
formé.
- ENOMEM
- Mémoire insuffisante.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
sem_open() |
Sécurité des threads |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
sem_close(3),
sem_getvalue(3),
sem_post(3),
sem_unlink(3),
sem_wait(3),
sem_overview(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Thomas Vincent <
[email protected]>
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 à
[email protected]