aaaaaaaaaaaarrrrrrrrrggggghhhhh
VVoVe:
ma che bestia nera è la fork()?
cosa fa con la memoria?
guardate questo pezzo di codice e ditemi (se potete):
- se io sono pazzo
- se il mio portatile è pazzo
- perchè succede questo
codice:
using namespace std;
#include<iostream>
int main(){
int pid1;
int i=0;
pid1=getpid();
fork();
while(1){
sleep(1);
if(pid1==getpid()){
i++;
cout<<"processo 1:"<<&i<<" = "<<i<<endl;
}else{
cout<<"processo 2:"<<&i<<" = "<<i<<endl;
}
}
return 0;
}
output del programma:
codice:
nik600@criminal:~/rete$ ./a.out
processo 2:0xbffff9a0 = 0
processo 1:0xbffff9a0 = 1
processo 2:0xbffff9a0 = 0
processo 1:0xbffff9a0 = 2
processo 2:0xbffff9a0 = 0
processo 1:0xbffff9a0 = 3
processo 2:0xbffff9a0 = 0
processo 1:0xbffff9a0 = 4
processo 2:0xbffff9a0 = 0
processo 1:0xbffff9a0 = 5
?????? setssi indirizzi di memoria e valori differenti?
come faccio a vedere il valore (aggiornato dal thread a) con una chiamata da parte del thread b?