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?