[理工] 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