gpt4 book ai didi

c - 带有 fork 的空 for 循环导致奇怪的行为

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:11 24 4
gpt4 key购买 nike

我希望这个程序打印从 0 到 5 的 i,但它只打印一次迭代。但是,如果我注释掉父循环的 for 循环,它会打印出预期的结果……这会导致什么?

int main(){
int pid;
int i=0;
for(i=0;i<5;i++){
printf("i: %d\n",i);
pid = fork();
if(pid < 0){
printf("Error forking\n");
} else if(pid == 0){
//child
for(i=0;i<10;i++);
exit(1);
} else {
//parent
for(i=0;i<10;i++);
//exit(1);
}
}
}

最佳答案

你总是在访问同一个变量 i在你的for - 循环,尤其是在“内部”循环中:

for(i=0;i<10;i++);

将它们更改为这样的东西以具有独立循环:

int j;
for(j=0;j<10;j++);

那么为什么它只执行一次迭代呢?自 i具有值(value) 10 (在两个过程中)在各自的内部循环之后,你的外部循环的条件 i < 5当然会评估为 false .

关于c - 带有 fork 的空 for 循环导致奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com