linux的frok循环,最诡异的Linux fork进程(平时我们都在用)

从来没有遇到过。。。

运行环境:在Linux自带的文本编辑器中输入C程序,在shell中编译运行,下面直接看代码和运行结果。

第一个代码:#include

#include

#include

#define N 2

int main()

{

int i;

pid_t pid;

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

{

pid = fork();

if(pid == 0)

{

printf(" %d ",  0);

exit(100+i);

}

else

flag:         printf(" %d ",  pid);

}

printf("over\n");

exit(0);

}

结果是:  0  2571  0  2571  2572  over

第一段的结果在想了很久之后都没能想通,为什么第二个0后面会输出两个数呢?然后准备在flag标记的那个printf后加个"\n"让其格式整齐一点发到博客园上问大家呢,结果加了“\n”后输出的结果却是下面我写的那样,更迷糊了,希望哪位大侠知道帮忙解答一下。

第二段:把第一段的flag那行改为printf(" %d\n", getpid(), pid);

结果为:  0    2598

0    2599

over

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值