Нам нужно сообщить результат следующей программы на С:
main()
{
int pid, k, som;
som = 0; k = 2;
pid = fork();
if(pid == 0)
k=5;
else
wait(0);
for(int i = 1; i <= k; i++)
som += i;
printf("%d", som);
}
Мое первое ожидание - 3. Когда выполняется вызов fork, память процесса копируется, и обе программы запускаются. Затем выполняется дочерний процесс, но k по-прежнему равен 2. Таким образом, в конце он выполняет 1 + 2 = 3;
Но когда эта программа выполняется, она выдает 153. У меня нет ближайшей подсказки, почему она выводит это.
Кто-нибудь может сказать, почему?