Ho questo codice:
Il problema è che il programma termina subito, ma non esegue alcuna stampa.codice:#include <iostream> #include <unistd.h> using namespace std; int main(int argc, char **argv) { int* mem=new int[100]; int pid=fork(),val; if(pid!=0) // padre { delete[] mem; } else // figlio { cin >> val; for(int i=0;i<100;i++) { mem[i]=5; cout << mem[i]; } } return 0; }
Eppure la dovrebbe eseguire la stampa, perchè il processo figlio ha la variabile pid che vale zero, per cui in quell' else ci dovrebbe antrare.
Poi nel libro scrive che "entrambe i processi hanno le proprie immagini private della memoria".
Questo proprio non l' ho capito, vengono copiate sia le variabili sullo stack che sull' heap?
E allora se uno ha un processore solo, potrebbe fare:
E ho constatato che stampa due indirizzi uguali.codice:pid_t pid=fork(); void* mem=malloc(100); cout << mem;
Ma allora come fanno ad avere due indirizzi uguali?![]()
Se puntano alla stessa area di memoria, potrebbero entrare in confilitto?![]()

Rispondi quotando