#include<stdio.h>
#include <stdlib.h>
int main()
{
int i=1;
pid_t j=fork();
i=4;
if(j==0)
{
printf("%d\n",i);
}
i=5; // will this line runs in both parent and child?
}
~после fork(), родительский процесс все еще может изменять значение переменной?
Я думаю, что после того, как вилка() в дочернем процессе, я не 1
независимо от того, как родительский процесс изменить его но результат 4 почему не 1?
как насчет линии 'i = 5' – misteryes
То же самое. Единственное «волшебство» в fork состоит в том, что он создает два процесса, а второй «начинается» сразу после вызова fork. Помимо этого (и тот факт, что 'j' имеет другое значение в родительском и дочернем), код выполняется в обоих процессах, следующих за всеми нормальными правилами. – Mat
, так что если я надеюсь, что дочерний процесс не запускается 'i = 5', я должен использовать' exit() 'внутри блока if (j == 0) {}? – misteryes