|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
[C] variabili e processo figlio
ho un problema...("...altrimenti non avresti scritto...", qualcuno di voi dirà....)
non so come (se si può) fare in modo che un processo figlio modifichi una variable del processo padre...in pratica, faccio un esempio: Codice:
int main(int argc, char* argv[]){
int var=0;
if (fork() == 0){/*creo il figlio che modifica la variabile*/
var=1;
}
printf(" %d ", var);
}
__________________
Ultima modifica di akyra : 10-06-2004 alle 17:16. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Dopo il fork i processi hanno storia indipendente. O usi segmenti di memoria condivisa, oppure usi i thread.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
Grazie della risposta intanto...
Segmenti di memoria condivisa? cosa intedi in parole povere? potresti farmi un esempio...se non approfitto troppo della tua disponibilità.....
__________________
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
IPC (Inter Process Comunication): qui trovi tutto e di più
http://www.lilik.it/~mirko/gapil/gap...apilsu184.html |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Guarda le manpage per shmget/shmat; oppure su google:
http://www.google.it/search?hl=it&ie...btnG=Cerca&lr= nb con i thread è molto più semplice, se puoi evitare di creare due processi indipendenti.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
thanks a tutti e due!!
__________________
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 1999
Città: Milano
Messaggi: 531
|
no veramente puoi provare anche con un altro comando
si chiama vfork ed in pratica non effetua la copia di tutte le variabile prova un pò...cmq funge!
__________________
Vintage signature: Abit nf7-s, Xp 2500+@2300mhz, 256 mb 418mhz cas2, geforce fx5700,S-ATA 160 Maxtor,Lg gsa 4120b...prima..ma ora..DELL INSPIRON 6400, ATI X1300... |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2000
Città: Amsterdam
Messaggi: 217
|
Quote:
Come e' andato l'esame? |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
spero bene, ho fatto un paio di cazzate, però spero di averlo passato....c'eri anche tu?
__________________
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2000
Città: Amsterdam
Messaggi: 217
|
Sisi
Spero anchio bene dai. Hai sentito? I risultati escono tra domani e dopodomani, la correzione c'e' venerdi Fossero tutti cosi' tempestivi Cya! |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 1999
Città: Milano
Messaggi: 531
|
non so cosa sia sta cow e sto mmu cmq al corso di sistemi che ho seguito mi è sembrato di capire che con la vfork non c è una nuova allocazione delle variabili, ma che in realtà vengono passate direttamente al figlio che quindi potrà modificarle......poi boh non so cosa intendi tu!
__________________
Vintage signature: Abit nf7-s, Xp 2500+@2300mhz, 256 mb 418mhz cas2, geforce fx5700,S-ATA 160 Maxtor,Lg gsa 4120b...prima..ma ora..DELL INSPIRON 6400, ATI X1300... |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9497
|
Quote:
Il cow (copy on write) e' un "meccanismo" mediante il quale il processo padre ed i figli creati mediante fork() condividono le variabili fintanto che non si tenta di aggiornare (sovrascrivere) tali variabili. A quel punto, per il processo che ha tentato di sovrascrivere, ne viene fatta una copia (Privata al processo) e l'aggiornamento avviene solo su quella copia. Piu' o meno e' cosi... penso...
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C. Ultima modifica di Ed_Bunker : 05-07-2004 alle 22:37. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 1999
Città: Milano
Messaggi: 531
|
ma non ho capito perchè non si può utilizzare la vfork cmq....
ho seguito il modulo a di sistemi!
__________________
Vintage signature: Abit nf7-s, Xp 2500+@2300mhz, 256 mb 418mhz cas2, geforce fx5700,S-ATA 160 Maxtor,Lg gsa 4120b...prima..ma ora..DELL INSPIRON 6400, ATI X1300... |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Feb 2004
Città: TREVISO
Messaggi: 902
|
il problema è che la vfork non restituisce il controllo al chiamante fino a che il figlio non ha eseguito una exec oppure ena exit, quindi mi sarebbe stata poco utile....comunque grazie lo stesso....
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:35.



















