View Full Version : [C] curiosita sulla fork e la exec
xsatellitex
07-09-2008, 14:15
Qualcuno puo' dirmi , dopo la exec , quali parti ( stack, area vuota per heap, dati , codice ) viene sostituita e quale no ?
e in particolare lo stack del processo che fine fa ?
thanks :rolleyes:
Credo che venga sostituito tutto e che lo stack venga ripulito:stordita:
xsatellitex
07-09-2008, 14:24
pensavo anch io che lo stack fosse ripulito ma non lo trovo scritto da nessuna parte
su un libro c'e' scritto " viene sostituita l'intera immagine in memoria " e su un altro c'e' scritto " viene sostituito dati e codice " .
non ho tempo ne voglia di smanettare col gdb per vedere cosa succede in realta' ... quindi se qualcuno puo' dirmelo con sicurezza :stordita:
tutte e 6 le funzioni exec* sostituiscono l'intera immagine del vecchio processo (codice, data, heap e stack) con i corrispettivi del nuovo.
se non ricordo male invece le variabili d'ambiente non vengono sostituite, a meno di usare execle() o execve() che permettono di specificarne di nuove.
esistono poi altre proprietà che vengono ereditate, tra cui per esempio i file descriptor
se vuoi approfondire un buon testo è il classico
W. Richard Stevens,
Advanced Programming in the UNIX Environment
Addison Wesley
sintetiche ma efficaci ci sono anche queste slide:
http://home.dei.polimi.it/antola/Informatica2/doc03-04/Programmazione_parallela.pdf
spero di esserti stato utile
ciao!
british
xciaoatuttix
08-09-2008, 22:43
ciao grazie per l'aiuto... nelle slide postate c'e' scritto:
La exec sostituisce il segmento codice e il segmento dati del
processo corrente con il codice e i dati di un programma
contenuto in un file eseguibile specificato. Il segmento di
sistema non viene sostituito (file e socket rimangono aperti
e disponibili)
dello stack e heap non ne parla :D
nel libro se ne parla :D
ciao!
british
xciaoatuttix
09-09-2008, 13:05
potresti dirmelo tu perche non ho il libro :stordita:
potresti dirmelo tu perche non ho il libro :stordita:
come ti dicevo sopra la exec e sue varianti sostituiscono codice, data, stack e heap con i corrispondenti del nuovo processo (stack e heap naturalmente vergini).
o forse non ho capito io la domanda?
ciao!
british
xciaoatuttix
09-09-2008, 16:24
ah ok quindi stack e heap vengono svuotati :stordita:
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.