Semaphore
-
Hi leute ich versuche eine Semaphore zum Laufen zu bekommen ...
die reagiert aber nicht .... also ich komme nicht in den kritischen bereich
int main(int argc, char **argv) { int semID; struct sembuf sema; /* Semaphore erzeugen */ semID = semget(2404, 1, IPC_CREAT | 0666); if (semID >= 0) { puts("Semaphore erzeugt. Vor Anfrage"); getchar(); /* Bereite die Semaphore vor und starte */ sema.sem_num = 0; sema.sem_flg = SEM_UNDO; sema.sem_op = -1; if (-1==semop(semID, &sema, 1)) { /* Fehler */ perror("semop"); } puts("bin im kritischen Bereich"); getchar(); sema.sem_op = 1; if (-1==semop(semID, &sema, 1)) { /* Fehler */ perror("semop"); } puts("und nun wieder draußen"); } else { perror("semget"); } }
woran liegt das
-
http://beej.us/guide/bgipc/output/html/multipage/semaphores.html
Och z.B.
sema.sem_num = 0;
sem_num is the number of the semaphore in the set that you want to manipulate.
Btw. Wo initialisierst du die Semaphore?
-
fehlt die intialisierung?