次の C プログラムの結果を伝える必要があります。
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 が出力されます。なぜそれが出力されるのか、最も近い手がかりがありません。
誰でも理由がわかりますか?