[理工] fork()问题

楼主: garnettooo (绝代风华贾奈特)   2017-04-04 18:48:00
各位大大好,小弟看到一题询问有多少process会产生的fork()提,想请问各位要
怎么算及分析题目
int main(){
int i;
for(i=0;i<3;i++){
if(fork()==0){
fork();
fork();
fork();
}
}
我知道当i=0的时候会产生出8个process,但是i=1&i=2时要如何判定fork()==0?
谢谢大家!
作者: yupog2003 (屁股)   2017-04-04 20:02:00
fork执行后,一个process会变成两个process,一个是parent,一个是child,其中parent process从fork()得到的回传值是child process的id,child process从fork()得到的回传值为0,从这边下去判断是否为0跟i等于多少没有关系
作者: darren0831 (达)   2017-04-05 13:25:00
parent process得到的回传值不是0,不会通过if判别式i=0时 除了一开始的主程式外还会生出另外八个process而这些process在i=1时,因为if(fork()==0)而会产生其他9个child process,跑完i=1后共81个process依此类推~配合yu大大的推文应该可以理解
作者: nakabin (日落)   2017-04-08 01:07:00
每一次跑loop的时候遇到的fork产生的child的回传值才会是0 以前的child已经不是child惹
作者: yupog2003 (屁股)   2017-04-08 10:07:00
为人子女有朝一日也会成为父母

Links booklink

Contact Us: admin [ a t ] ucptt.com