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?


Anmelden zum Antworten