Der Systemaufruf semctl()


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:

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.



FH-Köln hoch zurück weiter