Prototyp:
int semctl(int id, int num, int cmd, union semun arg)
Effekt:
Der Systemaufruf semgctl() kann verschiedene Steuerfunktionen auf einer Gruppe
von Semaphoren ausführen.
Includes:
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/types.h>
Parameter:
union semun{ int val; struct semid_ds *buf; ushort *array; }
Beispiele:
int semid1; /* Identifikatoren für Semaphorgruppe */
int semwert; /* Variable zum Aufnehmen des aktuellen Semaphorwertes */
unsigned short initarray[2]; /* Semaphoreingabewerte */
unsigned short outarray[2]; /* Semaphorausgabewerte */
/* Annahme: semid1 zeigt auf eine Gruppe von zwei Semaphoren */
initarray[0] = 1;
initarray[1] = 2;
semctl(semid1, 0, SETALL, initarray);
/* Initialisiert Semaphore mit den Werten, die in initarray stehen */
semctl(semid1, 0, GETALL, outarray);
/* Schreibt die aktuellen Semaphorwerte nach outarray */
semctl(semid1, 1, GETVAL, 0);
/* Liefert als Funktionswert den aktuellen Semaphorwert des zweiten Semaphors */
semctl(semid1, 0, SETVAL, semwert);
/* Initialisiert den ersten Semaphor mit dem Wert, der in semwert steht */
semctl(semid1, 0, IPC_RMID, 0);
/* Löscht die Semaphore */
Wenn Sie die Prozesse in dem unteren Feld der Graphik mit der Maus anklicken, werden die Beispiele demonstriert.