P
peerffm
Grünschnabel
hallo habe mich daran mal versucht.
vielleicht kann mirt jemand helfen.
bekomme folgende ausgabe:
Semaphore erzeugt
semop: Ressource temporarily unavaible
huhu bin im kritischen bereich
und nun wieder weg
irgendwie funktioniert das nicht wenn ich mehrere Terminal Fenster öffne und es starte müsste er ja wenn ich mit dem einem im Kritischen Bereich bin denn anderen Blockieren.
und wieso bekomme ich die obere fehlermeldung.
kann mir da jemand helfen ? danke
peer
vielleicht kann mirt jemand helfen.
Code:
#include <sys/ipc.h>
#include <sys/sem.h>
int main()
{
int semID;
struct sembuf sema;
//erzeuge des semaphoren
semID = semget(25112, 1, IPC_CREAT | 0777);
if (semID >= 0) {
puts("Semaphore erzeugt.....");
getchar();
//bereite vor und starte
sema.sem_num = 0;
sema.sem_flg = IPC_NOWAIT;
sema.sem_op = -1;
if (-1==semop(semID, &sema, 1)) {
perror("semop");
}
puts("huhu bin im kritischen Bereich");
getchar();
sema.sem_op = 1;
if (-1==semop(semID, &sema, 1)) {
perror("semop");
}
puts("und nun wieder weg");
} else {
perror("semget");
}
}
bekomme folgende ausgabe:
Semaphore erzeugt
semop: Ressource temporarily unavaible
huhu bin im kritischen bereich
und nun wieder weg
irgendwie funktioniert das nicht wenn ich mehrere Terminal Fenster öffne und es starte müsste er ja wenn ich mit dem einem im Kritischen Bereich bin denn anderen Blockieren.
und wieso bekomme ich die obere fehlermeldung.
kann mir da jemand helfen ? danke
peer