fork()進階點

#include  
int main(int argc, char* argv[])  
{  
   fork();  
   fork() && fork() || fork();  
   fork();  
   printf("+/n");  

}  

答案是總共20個進程,除去main進程,還有19個進程。
    我們再來仔細分析一下,爲什麼是還有19個進程。
    第一個fork和最後一個fork肯定是會執行的。
    主要在中間3個fork上,可以畫一個圖進行描述。
    這裏就需要注意&&和||運算符。
    A&&B,如果A=0,就沒有必要繼續執行&&B了;A非0,就需要繼續執行&&B。
    A||B,如果A非0,就沒有必要繼續執行||B了,A=0,就需要繼續執行||B。
    fork()對於父進程和子進程的返回值是不同的,按照上面的A&&B和A||B的分支進行畫圖,可以得出5個分支。

    

     加上前面的fork和最後的fork,總共4*5=20個進程,除去main主進程,就是19個進程了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章