Portál AbcLinuxu, 12. května 2025 21:08
Dobry den,
potreboval by som poradit s nastavovanim semaforov. Co mi nejde do hlavy je, preco tento kod:
/* Semaphores */ union semun semUnion; /* Creating semaphore 1 */ if ((sem1ID=semget(keySem1,2,IPC_CREAT|0666)) == -1) { perror("zadanie: semaphore1: "); exit (6); } /* Setting semaphore 1 */ /* Allowing proc_t writing */ semUnion.val=1; if ((semctl(sem1ID,0,SETVAL,semUnion)) == -1) { perror("zadanie: semaphore1: "); exit (7); } /* Denying proc_s reading */ semUnion.val=0; if ((semctl(sem1ID,1,SETVAL,semUnion)) == -1) { perror("zadanie: semaphore1: "); exit (7); } /* Creating semaphore 2 */ if ((sem2ID=semget(keySem2,2,IPC_CREAT|0666)) == -1) { perror("zadanie: semaphore2: "); exit (6); } /* Setting semaphore 2 */ /* Allowing proc_s writing */ semUnion.val=1; if ((semctl(sem2ID,0,SETVAL,semUnion)) == -1) { perror("zadanie: semaphore1: "); exit (7); } /* Denying proc_d reading */ semUnion.val=0; if ((semctl(sem2ID,1,SETVAL,semUnion)) == -1) { perror("zadanie: semaphore2: "); exit (7); } fprintf(stdout,"zadanie: sem1[0]: %d\n",semctl(sem1ID,0,GETVAL,semUnion)); fprintf(stdout,"zadanie: sem1[1]: %d\n",semctl(sem1ID,1,GETVAL,semUnion)); fprintf(stdout,"zadanie: sem2[0]: %d\n",semctl(sem2ID,0,GETVAL,semUnion)); fprintf(stdout,"zadanie: sem2[1]: %d\n",semctl(sem2ID,1,GETVAL,semUnion));dava takyto vypis:
zadanie: sem1[0]: 1 zadanie: sem1[1]: 0 zadanie: sem2[0]: 0 zadanie: sem2[1]: 0Dakujem za napady.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.