यह कुछ की तरह आदि है ...
1 (main) instance, i = 0(unforked)
fork() > 2 instances, with i's = 0(forked), and 0(forked)
0 output from main instance, increments its i, 2 instances with i = 1u, 0f
main instance forks, there's 3 instances with i's 1f, 1f, 0f
1 output from main instance, increments its i, 3 instances with i = 2u, 1f, 0f
main instance forks, there's 4 instances with i's 2f, 2f, 1f, 0f
2 output from main instance, increments its i, 4 instances with i = 3u, 2f, 1f, 0f
main instance then dies, 3 instances with i = 2f, 1f, 0f
2 output from next instance, increments its i, 3 instances with i = 3u, 1f, 0f
next instance then dies, 2 instances with i = 1f, 0f
1 output from next instance, increments its i to 2, 2 instances with i = 2u, 0f
...
आदेश है कि प्रक्रियाओं में उत्पादन हो रहा है, हालांकि, अनिश्चित है, इसलिए आप हर बार सटीक उसी आउटपुट को नहीं देख पाएंगे, और यहां तक कि यदि आप ऐसा करते हैं तो आप गारंटी नहीं दे सकते हैं।
जैसा कि अन्य लोगों ने कहा था, प्रत्येक प्रक्रिया का अपना वैश्विक 'i' होता है, जो इसका ट्रैक रखता है, और इसका मूल्य केवल फोर्क पर फोर्किंग प्रक्रिया का मूल्य है।
आपने हमें यह नहीं बताया है कि आपको इसके बारे में क्या पसंद नहीं है। – bmargulies
मुझे पसंद नहीं है क्योंकि मैं समझ नहीं पा रहा हूं कि जब हम मूल प्रक्रिया या बच्चों की प्रक्रियाओं में कांटा बढ़ाते हैं। आम तौर पर अगर हम बच्चे की प्रक्रिया में वृद्धि करना चाहते हैं तो हम करते हैं (फोर्क() == 0) ++ i; लेकिन जब हम इस तरह का कांटा करते हैं, तो मुझे बीच में थोड़ा खो दिया जाता है! – Bruno
उत्तर के अनुसार: बच्चे बच्चे को बढ़ाता है, माता-पिता माता-पिता बढ़ते हैं, कभी भी दो बार भोजन नहीं करेंगे। – bmargulies