कांटा के बिना निष्पादित
कम से कम दो कारण हैं कि आप ऐसा क्यों करना चाहेंगे:
- चेन लोडिंग। वर्तमान प्रक्रिया छवि को कुछ अलग से बदल दिया जाता है।
- वर्तमान में चल रहे प्रोग्राम को पुनरारंभ करना (उदाहरण के लिए तब हो सकता है जब आप SIGHUP या इस तरह की सर्वर प्रक्रिया, सब कुछ फिर से लोड करना और पूरी तरह से नई शुरुआत करना)। किसी तरह, कोई यह तर्क दे सकता है कि श्रृंखला लोड हो रही है, केवल संयोग से उसी कार्यक्रम के साथ।
बिना निष्कासन के कांटा
यही कारण है कि हर डेमन हर बार शुरू होने पर (दो बार, वास्तव में) करता है। यह कई चीजें करता है, उनमें से शेल लटका नहीं है (मूल प्रक्रिया के बाद से शेल समाप्त हो जाता है) और डेमॉन को टर्मिनल द्वारा नियंत्रित नहीं किया जाता है, इसलिए शेल विंडो को बंद करना डेमॉन को नहीं मारता है।
एक और आम उपयोग श्रमिक बच्चों के लिए है, जो लगभग 25 साल पहले एपाचे वेब सर्वर द्वारा प्रसिद्ध किया गया था (आजकल यह गरजना झुंड की समस्या से ग्रस्त होने के कारण कला की स्थिति नहीं माना जाता है, लेकिन यह सुनिश्चित करता है darn सबसे सरल, सबसे मजबूत सर्वर संभव)।
फिर भी एक और आम उपयोग एक सुसंगत स्नैपशॉट बनाना है। fork
न केवल एक प्रक्रिया बनाता है, यह भी कॉपी करता है (सिद्धांत रूप में, वास्तव में यह केवल पृष्ठों को कॉपी-ऑन-राइट लिखता है) पता स्थान। यह (atomically) संपूर्ण प्रोग्राम डेटा का एक स्नैपशॉट बनाता है जिसे माता-पिता अब संशोधित नहीं कर सकते।
कुछ कार्यक्रम इसका लाभ उठाते हैं। उदाहरण के लिए, रेडिस डेटा को डिस्क (एक सुसंगत स्थिति में) में सहेजता है जबकि एक ही समय में डेटा सेट को समवर्ती रूप से संशोधित करता है। यह केवल इसलिए काम करता है क्योंकि fork
एक सुसंगत स्नैपशॉट बनाया गया है जो मूल प्रक्रिया द्वारा किए गए संशोधनों को नहीं देखता है।