2013-06-23 4 views
7

NSXPCConnection राज्यों के interruptionHandler ब्लॉक के लिए प्रलेखन:क्या एक XPC बाधा हैंडलर जिसे लॉन्च किया जाता है, प्रक्रिया को मारता है?

एक रुकावट हैंडलर कि कहा जाता है यदि दूरस्थ प्रक्रिया बाहर निकलता है या दुर्घटनाओं।

हालांकि, Daemons and Services Programming Guide कहता है:

XPC सेवाओं launchd है, जो उन्हें मांग पर की शुरूआत है, अगर वे दुर्घटना उन्हें पुन: प्रारंभ होता है, और उन्हें समाप्त हो जाता है (SIGKILL भेजकर) जब वे निष्क्रिय हैं द्वारा प्रबंधित कर रहे हैं। यह सेवा का उपयोग कर एप्लिकेशन के लिए पारदर्शी है, एक ऐसी सेवा के मामले को छोड़कर जो किसी संदेश को संसाधित करते समय क्रैश हो जाता है जिसके लिए प्रतिक्रिया की आवश्यकता होती है। उस मामले में, आवेदन देख सकते हैं कि अपने XPC कनेक्शन अमान्य हो गया है जब तक सेवा निष्क्रिय होने के लिए एक XPC प्रक्रिया मार दिया जाता है, तो launchd

द्वारा पुन: प्रारंभ होने, मैं अपने interruptionHandler में एक कॉलबैक मिलेगा? या जब संदेश को संसाधित करते समय ऐप क्रैश हो जाता है तो क्या मुझे केवल कॉलबैक मिल जाएगा? मैं पूछता हूं क्योंकि यह टेस्ट केस ऐसा लगता है जैसे अनुकरण करना असंभव है। XPC सेवा जीवन चक्र दुर्भाग्य से एक बहुत ही काला बॉक्स है।

+0

क्या आपको पता चला है कि यह क्या करता है? SIGKILL भेजना मैन्युअल रूप से बाधा हैंडलर का आह्वान करता है। – ctietze

उत्तर

2

हाँ लॉन्च होने पर सेवा को रोकने पर रोकथाम हैंडलर को बुलाया जाएगा।

यह प्राकृतिक प्रतिक्रिया लॉन्च करने के द्वारा अनुक्रमित किया जा सकता है स्मृति के दबाव में है: सभी लॉन्च की गई लॉन्च सेवाओं को रोकना जो इस मुद्दे को दूर करने में मदद करने के लिए निष्क्रिय हैं।

एक नकली, स्मृति दबाव के स्तर को चेतावनी देने के लिए पर्याप्त होना चाहिए यहाँ है तुम कैसे करते:

sudo memory_pressure -S -l warn 

और महत्वपूर्ण के लिए:

sudo memory_pressure -S -l critical 

इस हालत अक्सर जब XPC सेवा का परीक्षण याद किया जाता है। हालांकि यह अनुशंसा की जाती है कि एक्सपीसी सेवाओं को स्टेटलेस बनने के लिए डिज़ाइन किया गया है, इसलिए ज्यादातर मामलों में इससे कोई फर्क नहीं पड़ता कि आपकी सेवा बंद है या अगली बार जब आप संदेश भेजते हैं तो लॉन्च करके पुनरारंभ किया जा सकता है। और आदर्श रूप से आपने कनेक्शन को अमान्य कर दिया जब आप इसके साथ आखिरी बार किया गया था।

लॉन्चड एक मौजूदा XPC लेनदेन होने पर उपरोक्त स्थितियों के साथ एक XPC सेवा को नहीं रोक पाएगा (पढ़ें: एक संदेश संभाला जा रहा है और/या उत्तर ब्लॉक लागू नहीं किया गया है)।

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