रूट के रूप में चलने वाले डेमन एप्लिकेशन के लिए सबसे अच्छा अभ्यास क्या है जिसे GUI तक पहुंच की आवश्यकता है? [बन्द है]


1

मैं विंडोज से C ++ / Qt एप्लिकेशन पर पोर्ट कर रहा हूं। विंडोज पर, प्रोग्राम एक सेवा के रूप में चलता है। यह उपयोगकर्ता के साथ बातचीत करने और GUI तत्वों को प्रदर्शित करने के लिए एक सेवा के रूप में चल रहे कार्यक्रमों से हतोत्साहित है।

इसलिए, मेरे कार्यक्रम के दो भाग हैं। पहला भाग सर्विस डेमॉन के रूप में चलता है और पृष्ठभूमि में ऑडियो चलाता है। कंप्यूटर शुरू होने पर प्रोग्राम शुरू होता है। दूसरा प्रोग्राम, जो तब शुरू होता है जब कोई भी उपयोगकर्ता लॉग इन करता है (Via Start Menu- & gt; सभी उपयोगकर्ता- & gt; स्टार्टअप), ऑडियो चलाने के दौरान GUI पॉप-अप प्रदर्शित करने के लिए सेवा डेमॉन के साथ स्थानीय सॉकेट के माध्यम से संचार करता है।

MacOS पर चलते हुए, उसी कार्यक्रम का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?

क्या मुझे दोनों कार्यक्रमों को एक में मर्ज करना चाहिए और इसे लॉन्च के माध्यम से रूट के रूप में चलाना चाहिए और एक डेमन डिस्प्ले जीयूआई के साथ-साथ ऑडियो भी खेलना चाहिए?

या मुझे इसे दो कार्यक्रमों के रूप में रखना चाहिए जैसे कि यह अब है - रूट डेमॉन ऑडियो खेल रहा है और एक ऐसा तरीका ढूंढता है कि जब प्रत्येक उपयोगकर्ता लॉग इन करता है तो दूसरा प्रोग्राम स्वचालित रूप से निष्पादित कर सकता है?

जवाबों:


2

MacOS पर, आपको किसी भी प्रक्रिया को चलाने से बचना चाहिए root। Apple संभवतः इस प्रकार के एप्लिकेशन को दो भागों में रखने की सलाह देगा। प्रत्येक भाग को उचित पात्रता के साथ सैंडबॉक्स किया जाना चाहिए।

आपकी पृष्ठभूमि कंप्यूटर विस्तृत प्रक्रिया ग्राफ़िकल इंटरफ़ेस तक पहुंचने में सक्षम नहीं होगी। आप जरुरत उपयोगकर्ता को इंटरफ़ेस प्रदान करने के लिए उपयोगकर्ता के सत्र के भीतर चलने वाली दूसरी प्रक्रिया।

उपयोग launchd मांग पर अपने कंप्यूटर की विस्तृत प्रक्रिया शुरू करने के लिए; नीचे XPC सेवाएं देखें। इस तरह, जबकि कुछ भी नहीं खेल रहा है, आप किसी भी संसाधन का उपभोग करने से बचते हैं।

XPC सेवाएँ

MacOS के लिए, Apple चाहता है कि आप का उपयोग करके संवाद करें XPC सेवाएं आर्किटेक्चर। यह दृष्टिकोण निम्न स्तर पर मैक पोर्ट का उपयोग करता है, लेकिन आपकी प्रक्रियाओं को उस विवरण के बारे में बहुत चिंतित होने की आवश्यकता नहीं है।


ठीक है। तो फिर मैक पर यह संभव है कि सिस्टम में कोई भी उपयोगकर्ता लॉग होने पर GUI प्रोग्राम को स्वचालित रूप से चालू करने का कारण बने?
Mikey A. Leonetti

1
हां, एक लॉन्च में काम /Library/LaunchAgents/ यह प्रदान करेगा। देख man launchd.plist अधिक विस्तार के लिए। सौभाग्य; यह चुनौतीपूर्ण होगा! ;-)
Graham Miln
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.