为了账号安全,请及时绑定邮箱和手机立即绑定

linux下的fork()运用?

linux下的fork()运用?

慕标琳琳 2021-01-06 11:07:18
#include<stdio.h>main(){int p1,p2;while((p1=fork()));if(p1==0)putchar('b);else{while((p2=fork())<0);if(p2==0)putchar('c');eleputchar('a');}}为什么我的输出都是acb呢,会有abc这种情况吗?求详细解释对了我的那个第一个while((p1=fork)<0)题目漏写了sorry
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

fork()创建一个子进程,fork()进入内核,调用一次返回两次,如果返回的pid == 0子进程先返回,如果pid > 0(此时返回的是子进程的pid),父进程先返回。至于子进程和父进程哪个先返回,要看内核的调度算法。输出次序乱序,都有可能。父进程和子进程是并发执行的。

查看完整回答
反对 回复 2021-03-28
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我不知道你的编译器是什么 但是你的代码有些问题 while(p1=fork())这个条件在gcc下会进入死循环
而且 while((p2=fork())<0);这个只是对P2=fork()赋值正确与否进行判断

查看完整回答
反对 回复 2021-03-28
  • 2 回答
  • 0 关注
  • 306 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信