2011-05-26 9 views
5

मेरे आवेदन को हाइबरनेशन मोड पर प्रतिक्रिया करने की आवश्यकता है ताकि यह निलंबन और फिर से शुरू होने पर अन्य कार्रवाइयों पर कुछ कार्रवाई कर सके। मुझे इसे प्राप्त करने के लिए कुछ वितरक-विशिष्ट तरीके मिल गए हैं (उपरोक्त + डीबीस) लेकिन कुछ भी सार्वभौमिक नहीं मिला। क्या इसे करने का कोई तरीका है?क्या लिनक्स में resume संकेतों को निलंबित कर रहे हैं?

धन्यवाद!

+2

यह कुछ http://www.mjmwired.net/kernel/Documentation/power/freezing-of-tasks.txt – Kristofer

+0

@ क्रिस्टोफर, सुराग के लिए धन्यवाद मुझे अधिक उपयुक्त पाया गया है: http: // www। mjmwired.net/kernel/Documentation/power/notifiers.txt लेकिन ऐसा लगता है कि यह केवल कर्नेल मोड में संभव है लेकिन मुझे किसी भी कर्नेल मॉड्यूल को लिखने के बिना उपयोगकर्ता स्थान में अधिसूचित होने की आवश्यकता है – ixSci

उत्तर

2

इसका एक आसान समाधान एक स्व-पाइप का उपयोग करना है। एक पाइप खोलें और समय-समय पर टाइमस्टैम्प लिखें। टाइमस्टैम्प पढ़ने और उन्हें वर्तमान समय की तुलना करने के लिए इस पाइप पर select। जब कोई बड़ा अंतर होता है, तो इसका मतलब है कि आप सिस्टम निलंबन या हाइबरनेट मोड से जाग गए हैं।

दूसरी तरफ के रूप में, ढक्कन बंद होने पर अधिक समय नहीं होता है और यह स्विच फ्लिप करता है।

यदि आपको वास्तव में निलंबन पर कार्य करने की आवश्यकता है, तो आपको pm-utils में https://help.ubuntu.com/community/PowerManagement/ReducedPower जैसे पावरव्यू हुक सेट करने की आवश्यकता होगी। यह रूप में सरल रूप में

kill -1 `cat mypid` ; sleep 1 

आपका प्रक्रिया होगा तो जाल SIGHUP हो सकता है और क्या निलंबन के लिए तैयार करने के लिए किया जाना चाहिए कर सकता है। नींद सिग्नल पर प्रतिक्रिया करने के लिए आपके कार्यक्रम के लिए पर्याप्त प्रक्रिया को देरी करती है।

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