Ciao, non ho capito perche' esegui

sem_init(&vuoto, 0, DIM_BUFFER);

il terzo parametro serve a indicare quanti processi possono entrare nel semaforo, sei sicuro che DIM_BUFFER debba stare li'?

In ogni caso se non ci sono processi all'interno di un semaforo, il semaforo mantiene i valori che gli hai impostato alla creazione per cui non c'e' alcuna ragione (che mi venga in mente al momento) per doverlo "resettare".

Ciao