एक अतिरिक्त प्रक्रिया हर बार fork
कहा जाता है बनाया जाएगा यदि।
fork
करने के लिए पहली कॉल, माता पिता प्रक्रिया पी पर उप प्रक्रिया SP1 पैदा करता है। कांटा के बाद, मूल प्रक्रिया fork
फिर से कॉल करती है (if
छोड़कर), उप-प्रक्रिया SP2 बनाते हैं। कांटा के बाद
SP1 fork
कॉल if
अंदर, बनाता उप उप प्रक्रिया SSP1। एसपी 1 फिर एक धागा पैदा करता है। एसपी 1 if
छोड़ देता है। और उप-उप-प्रक्रिया एसएसपी 2 बनाने, फिर से fork
पर कॉल करता है।
SSP1 एक धागा spawns। एसएसपी 1 if
छोड़ देता है, और उप-सब-सब-प्रोसेस एसएसएसपी बनाने, fork
पर कॉल करता है।
तो, बनाया प्रक्रियाओं: SP1, SP2, SSP1, SSP2, एसएसएसपी = 5 प्रक्रियाओं। यदि आप मूल प्रक्रिया पी को गिनते हैं, तो 6 प्रक्रियाएं होती हैं।
केवल SP1 और SSP1 अंडे धागे, इसलिए वहाँ 2 धागे बनाया जाता है। आप सभी प्रक्रियाओं के सभी मुख्य धागे गिनती करते हैं, तो 7 या 8 सूत्र, या नहीं, आप मूल प्रक्रिया पी
प्रक्रियाओं और धागे का एक उदाहरण बनाया कोड के लिए सहसंबद्ध किया जा रहा गिनती के आधार पर कर रहे हैं।
P
pid t pid; |
pid = fork(); +------SP1
if (pid == 0) { | |
fork(); | +---------------SSP1
thread create(...); | |-SP1's thread |-SSP1's thread
} | | |
fork(); +-SP2 +-SSP2 +-SSSP
| | | | | |
कोई लूप नहीं है। वह एक "अगर" है। – QuentinUK
क्यों 8 प्रक्रियाएं? 'फोर्क' कॉल में से एक परीक्षण में है। – didierc