Я недавно узнал о функции fork()
в C. Так как эта функция создает два параллельных процесса, и эти два процесса совместно используют память.Итак, у меня есть следующий код:
#include<stdio.h>
int main()
{
int pid,i;
i=0;
pid=fork();
if(pid==0)
{
i++;
printf("child process:: address of i:%u value of i:%d\n",(int)&i,i);
}
else if(pid>0)
{
wait(NULL);
i--;
printf("parent process:: address of i:%u value of i:%d\n",(int)&i,i);
}
return 0;
}
Вывод, который я получаю:
child process:: address of i:3215563096 value of i:1
parent process:: address of i:3215563096 value of i:-1
, но так как каждый раз, когда child выполняется первым, значение в ячейке памяти 3215563096 должно стать +1 для контраста 0 для родительского процесса.
Мой ожидаемый результат:
child process:: address of i:3215563096 value of i:1
parent process:: address of i:3215563096 value of i:0
Может кто-нибудь сказать мне, где я не прав?