मुझे पता है कि पृष्ठभूमि में ज्यादातर डेमन्स चलते हैं यानी उन्हें उपयोगकर्ता से बहुत कम बातचीत की आवश्यकता होती है।डेमॉन और सामान्य प्रक्रिया के बीच व्यवहार अंतर क्या हैं?
Wikipedia lists डेमॉन की है जो आम तौर मौजूद हैं:
- को नियंत्रित करने tty
- से अलग कर एक सत्र नेता
- एक प्रक्रिया समूह नेता
- forking द्वारा पृष्ठभूमि में रहकर बनना बनना और बाहर निकलना (एक या दो बार)। प्रक्रिया के लिए कभी-कभी सत्र नेता बनने की आवश्यकता होती है। यह माता-पिता की प्रक्रिया को सामान्य निष्पादन जारी रखने की अनुमति भी देता है। इस मुहावरे को कभी-कभी वाक्यांश "फोर्क ऑफ एंड डाई" वाक्यांश के साथ सारांशित किया जाता है
- वर्तमान निर्देशिका निर्देशिका के रूप में रूट निर्देशिका ("/") को सेट करना ताकि प्रक्रिया किसी भी निर्देशिका को किसी भी निर्देशिका में रखे जो कि आरोहित फ़ाइल सिस्टम पर हो (इसे अनमाउंट किया जा सकता है)।
- खुले(), creat(), et al को अनुमति देने के लिए उमास्क को 0 में बदलना। कॉलर
- निष्पादन के समय सभी विरासत वाली खुली फ़ाइलों को बंद करने के लिए कॉलर के umask पर निर्भर न करने के लिए कॉल करें, फाइल डिस्क्रिप्टर 0, 1 और 2 (stdin, stdout, stderr)। आवश्यक फाइलें बाद में खोली जाएंगी।
- एक लॉगफ़ाइल, कंसोल, या/dev/stdin, stdout के रूप में अशक्त, और stderr का उपयोग
मैं के रूप में विभेदित पता करने के लिए अगर वहाँ एक डेमॉन में व्यवहार में कोई अंतर हो सकता है चाहता हूँ एक सामान्य प्रक्रिया से, मैंने पहली पंक्ति में उल्लेख किया है। दोनों प्रकार की प्रक्रियाएं अपना काम करती हैं, और उपयोगकर्ता के साथ बातचीत करती हैं, जिनकी उन्हें अपनी नौकरी करने की आवश्यकता होती है।
क्या इससे अधिक दायित्व हैं?
इसलिए यदि मैं '$ प्रक्रिया' जैसे खोल से एक प्रक्रिया निष्पादित करता हूं, तो क्या यह एक डिमन के रूप में योग्य है? – Lazer
मैं नहीं कहूंगा - यह सिर्फ एक पृष्ठभूमि प्रक्रिया है। यह अभी भी आपके टर्मिनल से जुड़ा हुआ है, भले ही इसका आउटपुट अस्थायी रूप से दबाया जा रहा हो, और यदि कार्यक्रम अनिश्चित काल तक चलता है, तो संभवतः यह दिमाग में अंतःक्रियाशीलता के साथ लिखा गया था। एक डिमन स्वचालित रूप से टर्मिनल से अलग हो जाता है जिसमें इसे शुरू किया जाता है और गैर-अंतःक्रियाशीलता की अपेक्षा के साथ लिखा जाता है। –