Your Browser is not longer supported
Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...
{{viewport.spaceProperty.prod}}
semget - Semaphorkennzahl ermitteln
&pagelevel(4)&pagelevel
Definition | #include <sys/sem.h> int semget(key_t key, int nsems, int semflg); |
Beschreibung | semget() richtet eine Semaphorkennzahl mit der dazugehörigen Datenstruktur semid_ds und der dazugehörigen Menge von nsems Semaphoren (siehe sys/sem.h ) für das Argument key ein, wenn eine der folgenden Bedingungen zutrifft:
Beim Einrichten der neuen Semaphorkennzahl key wird die dazugehörige Datenstruktur semid_ds wie folgt initialisiert: Für die Strukturkomponenten sem_perm.cuid , sem_perm.uid , sem_perm.cgid und sem_perm.gid werden die effektive Benutzernummer und die effektive Gruppennummer des aufrufenden Prozesses eingetragen. In die 9 niederwertigen Bits von sem_perm.mode werden die 9 niederwertigen Bits von semflg eingetragen. sem_nsems gleich dem Wert von nsems gesetzt.
sem_otime wird gleich 0 und sem_ctime gleich der aktuellen Zeit gesetzt.
Die den einzelnen Semaphoren zugeordneten Datenstrukturen werden nicht initialisiert. setctl() kann mit den Kommandos SETVAL oder SETALL dazu verwendet werden, die einzelnen Semaphoren zu initialisieren.
|
Returnwert | Semaphorkennzahl |
|
| bei Erfolg. Die Semaphorkennzahl ist eine nichtnegative ganze Zahl. |
| -1 | bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen. |
Fehler | semget() schlägt fehl, wenn gilt:
|
| EACCES
| Für key existiert bereits eine Semaphorkennzahl, aber die in den 9 niederwertigen Bits von semflg angegebene Berechtigung wurde nicht erteilt. |
| EEXIST
| Für key existiert eine Semaphorkennzahl, aber (( semflg & IPC_CREAT) && ( semflg & IPC_EXCL)) ist ungleich 0. |
| EINVAL
| Der Wert von nsems ist entweder kleiner gleich 0 oder größer als der vom System festgelegte Maximalwert, oder es existiert bereits eine Semaphorkennzahl key, deren zugehörige Semaphorenmenge weniger als nsems Semaphore enthält und nsems ist ungleich 0. |
| ENOENT
| Für key existiert keine Semaphorkennzahl und ( semflg & IPC_CREAT) ist gleich 0. |
| ENOSPC
| Es soll eine Semaphorkennzahl eingerichtet werden; aber dadurch wird die Maximalzahl der Semaphoren überschritten, die im System zulässig sind. |
Siehe auch | semctl() , semop() , sys/sem.h , Abschnitt "Interprozesskommunikation“.
|