मैं यूनिक्स डेमॉन बनाने की सोच रहा हूं, और दो विधियां प्रतीत होती हैं। घना है, जो खोजते समय आ रहा है fork()
, setsid()
, fork()
फिर से फोन करने के लिए है, chdir()
सुरक्षित कहीं, umask()
close()
stdin
, stdout
और stderr
सेट और, अंत में,।डेमॉन() और कॉलिंग फोर्क(), setid(), कांटा() इत्यादि कॉल करने के बीच क्या अंतर है?
man daemon
चल रहा है, हालांकि, daemon()
फ़ंक्शन पर जानकारी लाता है, जो ऊपर जैसा ही सामान करता है। क्या दो दृष्टिकोणों के बीच कोई अंतर है या daemon()
केवल एक सुविधा फ़ंक्शन है जो लंबी हवा वाली विधि के समान ही काम करता है? क्या कोई बेहतर है, खासकर एक नौसिखिया सी प्रोग्रामर के लिए?
फ़ाइल डिस्क्रिप्टर 0, 1 और 2 को छोड़कर '/ dev/null' को खोलना उन्हें बंद करने के लिए बेहतर है, क्योंकि अन्यथा अगली फाइलें आपके डिमन खोलती हैं (लॉग फाइल, सॉकेट, ...) उन फाइल डिस्क्रिप्टर प्राप्त करेंगे - जो आपको काट सकता है, कहते हैं कि जब कुछ पुस्तकालय आप कॉल कर रहे बंद करने नहीं वर्णनकर्ता 0, 1 और 2 पर 'stderr' ... – caf
अच्छा कॉल करने के लिए एक त्रुटि लिखने का फैसला किया। –