Portál AbcLinuxu, 12. května 2025 21:08

Dotaz: IPC a semafory

tristan avatar 21.12.2006 11:40 tristan | skóre: 11
IPC a semafory
Přečteno: 388×
Odpovědět | Admin

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]: 0
Dakujem za napady.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

tristan avatar 21.12.2006 11:54 tristan | skóre: 11
Rozbalit Rozbalit vše Re: IPC a semafory
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prave som zistil, ze na Debiane 3.1 to pracuje spravne, ale na Gentoo to pokulhava a nechapem preco:(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.