• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Problem mit Semaphore

deetee

Newbie
Hallo,

in folgendem Code möchte ich einfach den Umgang mit Semaphoren näher kennenlernen. Allerdings funktioniert es nicht so, wie ich dachte.

Es scheint so, als ob semop() blockiert, da die nächste Zeile nicht ausgegeben wird. Aber warum?

Das Programm kann man einfach kopieren, wer es testen möchte.

Code:
#include <sys/ipc.h>
#include <sys/sem.h>

int main(int argc, char **argv)
{
int semID;
struct sembuf sema;

/* Semaphore erzeugen */
    semID = semget(1111, 1, IPC_CREAT | 0666);
    if(semID >= 0) {

        puts("Semaphore. Vor Anfrage\n");
		getchar();

        /* Bereite die Semaphore vor und starte */
        sema.sem_num = 0;
        sema.sem_flg = SEM_UNDO;
        sema.sem_op  = -1;

        semop(semID, &sema, 1);

		puts("bin im kritischen Bereich\n");

        getchar();
        sema.sem_op  = 1;

        semop(semID, &sema, 1);

        puts("und nun wieder draußen\n");
    }
	else {
        perror("semget");
    }
}
 
Oben