View Full Version : condividere variabile tra padre e figlio
ciao a tutti,
stavo smanettando con le fork ed ecco le prime difficoltà :)
supponiamo che abbia la necessità di convidere una variabile tra padre e figlio come posso realizzare una cosa di questo tipo?
altra cosa che non è mi molto chiara .. quando viene creato il figlio a questo viene associato il codice sorgente del padre, ora quello che mi chiedo, il figlio riesegue il programma da capo, oppure continua semplicemente ed esegue _SOLO_ la parete dell'if (pid ==0) ?
dalle prove che ho fatto direi che riinizia l'esecuzione da capo, ma non ne ho la certezza.
ciao
Arpeda
No...esegue solo la parte dell'if...
Dipende cosa intendi per condividere una variabile... Se vuoi che un valore calcolato prima delal fork sia utilizzabile anche dal figlio nond evi fare niente... Se vuoi invece condividere il valore anche dopo la fork ci sono tanti metodi, ad esempio le pipe o le zone di memoria in comune in cui allocare quella variabile...
vorrei condivedere la variabile anche dopo la fork.
per quanto riguarda il discorso dell'if ...
ho pensato che il figlio riesegue tutto da capo perchè ho fatto questa prova: (ti faccio un sunto)
pid_t pid;
int pippo=0;
int *ptr;
ptr = &pippo;
if ((pid=fork())==0) {
printf("valore nel figlio %d", *ptr);
*ptr = *ptr +1;
printf("valore nel figlio %d", *ptr);
} else {
printf("valore nel padre %d", *ptr);
*ptr = *ptr +1;
printf("valore nel padre %d", *ptr);
}
pensando che l'allocazione del puntatore che punta a pippo rimanesse inalterata nel figlio, evidentemente vengono riallocate anche i puntatori alle variabili. Per quanto riguarda le pipe, ho del materiale da leggere ma quando parli di "le zone di memoria in comune in cui allocare quella variabile" intendi area di memoria condivise da più processi?
Qualche dritta è ben accetta :)
grazie
Arpeda
Sì...aree di memoria condivise fra più processi...
La fork fa una copia speculare dello stato attuale del processo nel nuovo processo creato... I puntatori pur contendo lo stesso indirizzo puntano a zone di memoria fisica diverse...
Non ti posso consigliare moto perchè non ho mai usato memoria condivisa, ma ho trovato questo link:
http://fscked.org/writings/SHM/shm.html
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.