लघु गैर-डेमॉन कार्यों के लिए लॉन्चड का उपयोग करना


1

मैं ओएस एक्स में एक "स्टार्टअप आइटम" बनाना चाहता हूं। हाल ही के सभी दस्तावेज़ीकरण सुझाव देते हैं कि पारंपरिक स्टार्टअप आइटम पर लॉन्च को प्राथमिकता दी जानी चाहिए।

हालांकि, लॉन्च को वास्तविक डेमॉन को लॉन्च करने की दिशा में देखा जा रहा है, न कि उन त्वरित कार्यों के लिए जो अपना काम करते हैं और बाहर निकलते हैं। डेवलपर पुस्तकालय दस्तावेज़ कहते हैं:

जरूरी: यदि आपका डेमॉन लॉन्च होने के बाद बहुत तेज़ी से नीचे गिरता है, तो लॉन्चड सोच सकता है कि यह दुर्घटनाग्रस्त हो गया है। इस व्यवहार को जारी रखने वाले डेमन को निलंबित किया जा सकता है और भविष्य के अनुरोध आने पर दोबारा लॉन्च नहीं किया जा सकता है। इस व्यवहार से बचने के लिए, लॉन्च के बाद कम से कम 10 सेकंड के लिए बंद न करें।

इससे मुझे यह आभास होता है कि लॉन्चिंग रास्ता नहीं है। एक 10 सेकंड की नींद को लागू करना एक मैला समाधान की तरह लगता है।

संक्षेप में, मेरा प्रश्न इस पर उबलता है: स्टार्टअप पर "हैलो वर्ल्ड" कार्यक्रम चलाने का सही तरीका क्या है? क्या यहां गलत टूल लॉन्च किया गया है?


1) यदि आप कुछ प्रोग्रामिंग कर रहे हैं तो मैं इसे StackOverflow 2 में स्थानांतरित करने के लिए मतदान करूँगा) यह सब आपके वास्तविक विश्व उपयोग के मामले पर निर्भर करता है। हैलो वर्ल्ड प्रोग्राम के बारे में चर्चा करना उपयोगी नहीं है। 3) launchd पृष्ठभूमि प्रक्रियाओं के लिए इस्तेमाल किया जाना चाहिए। किसी भी अन्य मामले में, "सामान्य" स्टार्टअप आइटम का उपयोग करें, जैसा यहाँ बताया गया है
slhck

जवाबों:


1

जब तक आपको OS X (यानी 10.3 या पुराने) के पुराने संस्करणों के साथ संगतता की आवश्यकता नहीं है, मैं एक LaunchDaemon का उपयोग करूंगा। डेमन के बारे में बहुत जल्दी बाहर निकलने का मुद्दा केवल एक समस्या है अगर लॉन्च को डेमॉन को फिर से शुरू करना माना जाता है। अगर मुझे आपका मामला समझ में आता है, तो यह प्रासंगिक नहीं है। कारण यह है कि मैं StartupItem के बजाय एक LaunchDaemon का उपयोग करूंगा, यह है कि बूट प्रक्रिया StartupItems के पूरा होने की प्रतीक्षा करेगी; मैंने इसका अच्छी तरह से परीक्षण नहीं किया है, लेकिन मेरी धारणा यह है कि एक भी तेजी से स्टार्टअपअप काफी बूट प्रक्रिया को धीमा कर देगा।

तो, मैं एक LaunchDaemon के साथ जाऊँगा। बस यह सुनिश्चित करें कि इसके .plist में शामिल हैं:

<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>

यदि आपका कार्यक्रम किसी भी उपप्रकारों को जन्म देता है, जो माता-पिता के बाहर निकलने के बाद चालू रखने की आवश्यकता है, तो आपको भी शामिल होना चाहिए:

<key>AbandonProcessGroup</key>
<true/>

... बचे हुए उपप्रकारों को "सफाई" से लॉन्च करने के लिए।


धन्यवाद। 10.3 के साथ संगतता एक मुद्दा नहीं है।
jjs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.