我们需要告诉以下 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。我没有得到最近的线索为什么它会输出那个。
谁能告诉我为什么?