PDA

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:

braian
07-09-2008, 14:18
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:

british
08-09-2008, 21:59
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

british
09-09-2008, 10:55
nel libro se ne parla :D

ciao!

british

xciaoatuttix
09-09-2008, 13:05
potresti dirmelo tu perche non ho il libro :stordita:

british
09-09-2008, 16:16
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: