我們知道,fork可以創建子進程,那麼如果循環調用fork,進程之間會有什麼關係呢?
從結果上分析,一共有4個進程,6132,6133,6134,6135,它們的關係是怎樣的呢?
按道理來講,剛開始i=0,只有一個進程6132,fork後,產生子進程6133。6132執行完printf後,i++。在fork後,6132作爲父進程,產生子進程6134.而6133作爲i=0時的子進程,執行完printf後,i++,此時6133作爲父進程,產生子進程6135。
結果卻和所想有些出入,爲什麼後4個進程的父進程都是1?
我認爲可能和內核進程調度算法有關,可能是因爲父進程執行完,而子進程沒有執行完,導致子進程成爲孤兒進程,被1給回收。
之後我給父進程加上sleep(1);
這樣就能夠直觀的顯示進程之間的關係了。