[问题] if statement with fork()

楼主: j611062000 (iLoveLumia)   2017-07-23 16:42:25
最近小弟在读OS, 用C++在ubuntu上做了一些练习, 发现一个很奇怪的地方
code1跟code2差别在else statement, 其中1代表一个process(包含test2自己)
但code1只是多了一个else却造成output有8个1(比code2多了2个), stack overflow
上面也没有类似例题, 想了满久也不确定是什么机制造成else那边会再多生出2个
process, 先谢谢大家
[Code1_output: 11111111]
void test2(){
int i;
fork();
if(fork()>0){
fork();
}
else if(fork()==0){}
cout<<" 1 "; //输出一个1代表1个process
}
[Code2_output: 111111]
void test2(){
int i;
fork();
if(fork()>0){
fork();
}
// else if(fork()==0){}
cout<<" 1 "; //输出一个1代表1个process
}
作者: silentazure (北极熊)   2017-07-23 19:21:00
if那一层fork的return值 <
作者: yupog2003 (屁股)   2017-07-23 21:26:00
建议可以画个图说明一下你的思考模式这样板友比较好帮你找问题点
作者: a0919610611 (炽)   2017-07-23 22:35:00
进 if 判断那个 fork()==0 的 fork 也会执行呀
作者: Bencrie   2017-07-24 00:19:00
8 个 6 个没错啊
作者: kenduest (小州)   2017-07-24 09:35:00
题外话思考逻辑是不是应该先 value = fork() 然后来判断
楼主: j611062000 (iLoveLumia)   2017-07-25 10:42:00
已更新
继续阅读
[问题] Arch-Linux 安装的疑问 (暂时改装其他)ekids1234[问题] Linux指令区分大小写的好处?dharma[问题] 工作站内网架设yoyo50420[问题] @folder [email protected]

Links booklink

Contact Us: admin [ a t ] ucptt.com