2009-07-05 15 views
6

के रूप में स्टार्टअप पर क्यूटी एप्लिकेशन चलाएं मैंने एक क्यूटी एप्लीकेशन विकसित किया है जिसमें एक टीसीपी सर्वर और ऐसा शामिल है। अब मैं उबंटू पैकेज बनाने की कोशिश कर रहा हूं और एप्लिकेशन को स्वचालित रूप से स्टार्टअप पर शुरू करने देता हूं।लिनक्स डिमन

आवेदन भले ही कोई नहीं में लॉग ऑन है, जिसका अर्थ है एक डेमॉन /etc/init.d/ में एक स्क्रिप्ट के माध्यम से शुरू कर दिया चल किए जाने की आवश्यकता

मैं बस प्रारंभ पर अनुप्रयोग चल की कोशिश की है और एक kill- भेजने init.d स्क्रिप्ट में स्टॉप पर सिग्नल लेकिन इसका मतलब है कि एप्लिकेशन अग्रभूमि में चलता है और init-script को अवरुद्ध करता है।

Forking like in an other question लगभग काम करता प्रतीत होता है, मुझे एक टीसीपी सर्वर शुरू करने की कोशिश करने के बाद 'अज्ञात त्रुटि' मिलती है। फिर भी, एक इनिट-स्क्रिप्ट लिखने का एक आसान तरीका होना चाहिए जो विभिन्न लिनक्स वितरण पर स्टार्टअप पर पृष्ठभूमि में मेरा एप्लिकेशन चलाता है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

क्यूटी 4.5

+0

क्या आप कोई gui प्रस्तुत करते हैं या यह पूरी तरह से कंसोल है? –

+0

यह केवल विवेकपूर्ण है और कभी भी उपयोगकर्ता-इनपुट की आवश्यकता नहीं है। – dutchmega

उत्तर

1

साथ Ubuntu 9.10 का उपयोग करते हुए अपने कार्यक्रम एक जीयूआई आवेदन है या यह जीयूआई बिना काम करता है?

आप & का उपयोग करके इनिट स्क्रिप्ट के भीतर क्यों पृष्ठभूमि नहीं करते हैं?

1

आपको डिफ़ॉल्ट रनलेवल के आधार पर/etc के अंतर्गत किसी भी आरसी? .d निर्देशिकाओं में एक प्रतीकात्मक लिंक जोड़ने की आवश्यकता है। या अद्यतन-rc.d स्क्रिप्ट का उपयोग करें: सबसे पहले आपको /etc/init.d में एक स्क्रिप्ट बनाने की आवश्यकता है जो एप्लिकेशन को निष्पादित करता है; दूसरा, शुरू करने के लिए आवश्यक फ़ाइलों को जोड़ने के लिए अद्यतन-rc.d स्क्रिप्ट का उपयोग करें।

आप कैसे अद्यतन-rc.d मैनुअल पृष्ठ को पढ़ कर यह करने के लिए के बारे में जानकारी पा सकते हैं:

$man update-rc.d 
+0

अद्यतन-आरसीडी वितरण विशिष्ट है। –

2

सबसे अच्छा तरीका शायद QtService जहां forking का काम आप के लिए आप हो जाता है का उपयोग करें।

हालांकि, अगर आप अपना खुद का निर्माण जारी रखना चाहते हैं, तो आपको या तो start-stop-daemon के माध्यम से एप्लिकेशन को पृष्ठभूमि या चलाने के लिए OpenRC या आपके वितरण के लिए समान उपयोगिता के साथ चलाना चाहिए।

इसके अलावा, सुनिश्चित करें कि आप केवल QtCore साझा लाइब्रेरी से लिंक हैं। यद्यपि एप्लिकेशन कमांड लाइन हो सकता है और जीयूआई कभी नहीं खींच सकता है, इसका मतलब यह नहीं है कि एप्लिकेशन को चलाने के लिए एक्स की आवश्यकता नहीं है। उदाहरण के लिए, इकाई परीक्षण का एक सेट:

$ ldd runTests | grep Qt 
libQtTest.so.4 => /usr/lib/qt4/libQtTest.so.4 (0x00007fd424de9000) 
libQtXml.so.4 => /usr/lib/qt4/libQtXml.so.4 (0x00007fd424baa000) 
libQtGui.so.4 => /usr/lib/qt4/libQtGui.so.4 (0x00007fd4240db000) 
libQtCore.so.4 => /usr/lib/qt4/libQtCore.so.4 (0x00007fd422644000) 

क्योंकि QtGui मौजूद है, सभी एक्स पुस्तकालयों भी, लाया जाता है, हालांकि इसके बाद के संस्करण उत्पादन में से हटा दिए।

0

मुझे लगता है कि सबसे आसान तरीका यह है कि आपके एप्लिकेशन में कोई डिमनीज तर्क नहीं है, इसके बजाय पृष्ठभूमि में ऐप शुरू करने और इसके लिए एक पिड प्रबंधित करने के लिए एक सहायक प्रोग्राम का उपयोग करें।

उदाहरण के लिए, startproc

0

प्रेरणा के लिए आप अपने /etc/init.d में पहले से ही कई स्क्रिप्ट देख सकते हैं। जो मैं वहां देखता हूं, उससे अधिकांश मानक लिनक्स डिमन्स startproc पर शुरू होने के लिए, और killproc पर रोक लगाने के लिए निर्भर करते हैं।

+0

यहां अधिक विशिष्ट उदाहरण देना उपयोगी होगा। साथ ही, कृपया अपनी पोस्ट को और अधिक पठनीय बनाने के लिए कोड स्वरूपण का उपयोग करें। – bcr

संबंधित मुद्दे