semctl | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semctl (int semid, int semno, int cmd, ...);
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Cette fonction prend trois ou quatre arguments, selon cmd. Lorsqu'il y en a quatre, le quatrième a le type suivant : union semun. Le programme appelant doit définir cette union comme suit :
union semun { int val; /* Valeur pour SETVAL */ struct semid_ds *buf; /* Tampon pour IPC_STAT, IPC_SET */ unsigned short *array; /* Table pour GETALL, SETALL */ struct seminfo *__buf; /* Tampon pour IPC_INFO (Spécifique à Linux) */ };
La structure de données semid_ds est définie dans <sys/sem.h> de la manière suivante :
struct semid_ds { struct ipc_perm sem_perm; /* Appartenance et permissions */ time_t sem_otime; /* Dernière heure semop */ time_t sem_ctime; /* Dernière heure de modification */ unsigned short sem_nsems; /* N° du semaphore dans le jeu */ };
La structure ipc_perm est définie dans <sys/ipc.h> de la manière suivante (les champs mis en évidence peuvent être configurés avec IPC_SET) :
struct ipc_perm { key_t key; /* Clé fournie à semget(2) */ uid_t uid; /* UID effectif du propriétaire */ gid_t gid; /* GID effectif du propriétaire */ uid_t cuid; /* UID effectif du créateur */ gid_t cgid; /* GID effectif du créateur */ unsigned short mode; /* Permissions */ unsigned short seq; /* Nombre de séquences */ };
Les valeurs autorisées pour l'opération cmd sont :
struct seminfo { int semmap; /* Nombre d'entrées dans la table des sémaphores ; inutilisé dans le noyau */ int semmni; /* Nombre maximum de jeux de sémaphores */ int semmns; /* Nombre maximum de sémaphores dans tous les jeux de sémaphores */ int semmnu; /* Nombre maximum de structure undo à l'échelle du système ; inutilisé dans le noyau */ int semmsl; /* Nombre maximum de sémaphores dans un jeu */ int semopm; /* Nombre maximum d'opérations pour semop(2) */ int semume; /* Nombre maximum d'entrées undo par processus ; inutilisé dans le noyau */ int semusz; /* Taille de la structure sem_undo */ int semvmx; /* Valeur de sémaphore maximum */ int semaem; /* Valeur maximum qui puisse être enregistrée pour un ajustement de sémaphore (SEM_UNDO) */ };Les réglages semmsl, semmns, semopm et semmni peuvent être modifiés via /proc/sys/kernel/sem ; voir proc(5) pour les détails.
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Toutes les autres commandes cmd renvoient zéro en cas de réussite.
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Divers champs de la struct semid_ds étaient des short sous Linux 2.2 et sont devenus long sous Linux 2.4. Pour en tirer parti, une recompilation sous glibc 2.1.91 ou ultérieure doit suffire. (Le noyau distingue les anciens et nouveaux appels par un drapeau IPC_64 dans cmd.)
Dans certaines versions précédentes de la glibc, l'union semun était définie dans <sys/sem.h>, mais POSIX.1-2001 demande que l'appelant définisse cette union. Dans les versions de la glibc où cette union n'est pas définie, la macro _SEM_SEMUN_UNDEFINED est définie dans <sys/sem.h>.
La limite suivante influe sur l'appel système semctl() :
Pour améliorer la portabilité, il vaut mieux invoquer toujours semctl() avec quatre arguments.
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 6 juin 2008.
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=C man 2 semctl ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
EFAULT | ERREURS |
EIDRM | ERREURS |
EINVAL | ERREURS |
EPERM | ERREURS |
ERANGE | ERREURS |
GETALL | DESCRIPTION |
GETNCNT | VALEUR RENVOYÉE |
GETPID | VALEUR RENVOYÉE |
GETVAL | VALEUR RENVOYÉE |
GETZCNT | VALEUR RENVOYÉE |
IPC_INFO | VALEUR RENVOYÉE |
IPC_INFO (Spécifique à Linux) | DESCRIPTION |
IPC_RMID | DESCRIPTION |
IPC_SET | DESCRIPTION |
IPC_STAT | DESCRIPTION |
SEM_INFO | VALEUR RENVOYÉE |
SEM_INFO (Spécifique à Linux) | DESCRIPTION |
SEM_STAT | VALEUR RENVOYÉE |
SEM_STAT (Spécifique à Linux) | DESCRIPTION |
SEMVMX | NOTES |
SETALL | DESCRIPTION |
SETVAL | DESCRIPTION |