chamada do sistema fork () e espaço de memória do processo
Cito "quando um processo cria um novo processo usando a chamada fork (), apenas os segmentos de memória compartilhada são compartilhados entre o processo pai e o processo filho recém-bifurcado. Cópias da pilha e da pilha são feitas para o processo recém-criado" de soluções "conceitos de sistema operacional" da Silberschatz.
Mas quando eu tentei este programa
#include <stdio.h>
#include <sys/types.h>
#define MAX_COUNT 200
void ChildProcess(void); /* child process prototype */
void ParentProcess(void); /* parent process prototype */
void main(void)
{
pid_t pid;
char * x=(char *)malloc(10);
pid = fork();
if (pid == 0)
ChildProcess();
else
ParentProcess();
printf("the address is %p\n",x);
}
void ChildProcess(void)
{
printf(" *** Child process ***\n");
}
void ParentProcess(void)
{
printf("*** Parent*****\n");
}
o resultado é como:
*** Parent*****
the address is 0x1370010
*** Child process ***
the address is 0x1370010
pai e filho imprimindo o mesmo endereço que está na pilha.
alguém pode me explicar a contradição aqui. indique claramente quais são todas as coisas compartilhadas pelos pais e filhos no espaço de memória.