federicofollini
Nuovo Utente
- Messaggi
- 11
- Reazioni
- 1
- Punteggio
- 23
devo creare un sistema di sincronizzazione di processi in C seguendo questo schema:
PADRE:
ho già creato il semaforo in questo modo
e nel figlio ho recuperato il semaforo e fatto così:
Facendo così i figli mi stampano a video "sono in attesa", tuttavia non riesco a sbloccarli una volta che il padre ha erminato l'inserimento cei dati. come posso fare?
PADRE:
Codice:
[crea i figli]
[riempie la memoria condivisa]
[da la possibilità ai figli di accedere alla memoria]
ho già creato il semaforo in questo modo
Codice:
struct sembuf * sops = (struct sembuf *) malloc (configs[0]*sizeof(struct sembuf));
int semid = semget(key_s, 1, IPC_CREAT | IPC_EXCL | 0666);
printf("modifico i semafori\n\n");
sops[0].sem_num = 0;
sops[0].sem_op = 1;
sops[0].sem_flg = 0;
semop(semid, sops, 1);
e nel figlio ho recuperato il semaforo e fatto così:
Codice:
struct sembuf * sops = (struct sembuf *) malloc (1*sizeof(struct sembuf));
if((semid = semget(sem_key, 1, 0666)) == -1) {
perror("semget");
exit(1);
}
printf("Sono in attesa..\n\n");
sops[0].sem_num = 0;
sops[0].sem_op = -1;
sops[0].sem_flg = 0;
semop(semid, sops, 1);
Facendo così i figli mi stampano a video "sono in attesa", tuttavia non riesco a sbloccarli una volta che il padre ha erminato l'inserimento cei dati. come posso fare?