Я изучал, что во время разветвления сегмент данных и кода родительского процесса дублируется в дочерний процесс.
Пожалуйста, см. Программу ниже.
int main()
{
int a = 5;
pid_t pid;
pid = fork();
if(pid == 0)
{
printf("In child a = %d",a);
}
else
{
printf("In parent a = %d",a);
}
return 0;
}
Здесьнаходится в сегменте стека родительского процесса, как объявлено внутри функции, main()
.Дочерний процесс должен получать только копию кода и сегмент данных родительского процесса, а не стек во время fork()
.Но когда я запускаю программу, я вижу, что дочерний процесс может также получить доступ к переменной «a».Это означает, что каким-то образом стек родительского процесса также копируется в дочерний процесс.
Пожалуйста, сообщите мне причину этого и исправьте меня, если мое понимание неверно.