i "Çatal()", yaşadığım, iki farklı süreçler olmalıdır, kod aşağıdaki çalıştırdığınızda bir çatal() akımı (çağırarak) sürecinin tam bir kopyası çağrıldığında started.Now olduğunu her yerde okumak için yeni vars ve işlevlerine atanan iki farklı bellek konumu.Çatal kullanıldığında bellek nasıl eşlenir?
#include<stdio.h>
int i=10;
int pid;
int main(){
if((pid=fork())==0){
i++;//somewhere I read that separate memory space for child is created when write is needed
printf("parent address= %p\n",&i);// this should return the address from parent's memory space
}else{
i++;
i++;
printf("child address= %p\n",&i);// this should return the address of child's memory space
}
wait(0);
return(0);
}
Why The output looks like:: child address::804a01c parent address::804a01c
Neden hem adres ebeveyn hem de çocuk için aynıdır?
Onlar daha iyiydi * aynı olmalılar. İşaretçilerin bellekleri her iki işlemde de aynı şekilde göndermelerini istiyorsunuz (her iki bellek parçası da farklı olsa bile). Oku * sanal bellek *, bu sorunuza cevap verecektir. –
Her iki kopya da aynı sanal adreste depolanmış olsa bile, 'i'nin * değerlerinin * ebeveyn ve çocuk arasında farklı olduğunu unutmayın. – markgz