Linux |
CentOS 5.3 |
|
sem_open(3) |
sem_open − Initialiser et ouvrir un sémaphore nommé. |
#include <semaphore.h> sem_t *sem_open(const char *name, int oflag); sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value); |
sem_open() crée un nouveau sémaphore POSIX ou en ouvre un existant. Le sémaphore est identifié par name. Pour les détails de la construction de name, voir sem_overview(7). L’argument oflag spécifie les attributs qui contrôlent la manière d’opérer de l’appel. 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 du nom de name 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). Ces permissions sont « masquées » avec le 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 value spécifie la valeur initiale du nouveau sémaphore. Si O_CREAT est spécifié et que le sémaphore du nom de name existe déjà , mode et value 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. |
EACCESS |
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 avec le nom de name existe déjà . |
|
EINVAL |
value était plus grand que SEM_VALUE_MAX. |
|
EMFILE |
Le processus a déjà le nombre maximum de fichiers ouverts. |
ENAMETOOLONG |
name était trop long. |
ENFILE |
La limite système sur le nombre total de fichiers ouverts a été atteinte. |
|
ENOENT |
L’attribut O_CREAT n’était pas spécifié dans oflag, et aucun sémaphore avec le nom de name n’existe. |
|
ENOMEM |
Mémoire insuffisante. |
POSIX.1-2001. |
sem_close(3), sem_getvalue(3), sem_post(3), sem_unlink(3), sem_wait(3), sem_overview(7) |
Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 29 juillet 2006. L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 3 sem_open ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel. |
sem_open(3) |