Svolgiamo insieme [Programma di prova produttore-consumatore]

7 Ottobre 2018
11
2
3
#1
Ciao a tutti, stavo provando a fare questo semplice programma di prova in C giusto per capire bene come funzionano i semafori e la memoria condivisa.
Il problema è che mi da errore di permessi negati quando vado ad eseguire la execl.
Non posto tutto il codice qui, potete trovarlo su GitHub https://github.com/Giusepp3/provaMultiProc

Grazie!
 
Ultima modifica:
20 Settembre 2016
4
1
3
#2
Quando fai la exec , devi passare come secondo parametro necessariamente il nome del file da eseguire e i puntatori (convertito a char*) delle aree di memoria condivise a cui devono accedere il produttore e il consumatore. Ad esempio:
execl("./cons","cons",(char *) ds_sem, (char *)ds_shm, eccetera);
nel codice del consumatore prendi questi parametri come argomenti esterni. Avrai un main del tipo

int main(int argc, char *argv[]){

}
e potrai estrarre i descrittori passati come una cosa del tipo
int shm_desc= (int *) argv[1];
Nel codice dei produttori e consumatori non devi creare di nuovo le risorse condivise, ma con la get devi prendere i puntatori alle risorse già allocate nel padre usando IPC_CREAT

Questo è come faccio io, non so se è il più corretto o meno
 
Mi Piace: poel

Seguici su Facebook