Poniżej jest przykładowy kod, w którym ręcznie alokuję sobie pamięć, następnie ustawiam wartość dla a na 1, rozdzielam procesy, w potomku ustawiam a na 5 i drukuję, po sekundzie robię to samo u przodka.
Może mi ktoś wytłumaczyć, dlaczego pomimo takiego samego adresu w pamięci wartości dla a u przodka i potomka są różne?
Kod:
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char *a;
a = (char *) malloc(sizeof(char));
*a = 1;
if (fork() == 0) {
*a = 5;
printf("%d %p %d\n", *a, a, getpid());
} else {
sleep(1);
printf("%d %p %d\n", *a, a, getpid());
}
return 0;
}
Kod: Zaznacz cały
5 0x82b9008 6860
1 0x82b9008 6859