2011-04-21 7 views
9

क्या लिनक्स में उपयोगकर्ता परिभाषित सिग्नल बनाने का कोई तरीका है? मेरा सिग्नल (सिग्नल नंबर) मौजूदा सिग्नल नंबरों में से किसी से मेल नहीं खाता है।क्या लिनक्स में उपयोगकर्ता परिभाषित सिग्नल बनाने का कोई तरीका है?

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

क्या यह संभव है? यदि हां, तो कैसे?

अग्रिम धन्यवाद।

उत्तर

2

आप अपना खुद का सिग्वाटर नहीं जोड़ या पंजीकरण कर सकते हैं।

sigset_t देखें, यह निश्चित आकार है। valid_signal() beartraps देखें।

+1

आपको यह 'valid_signal() 'कहां मिलता है? मुझे इसके लिए कोई भी मैन पेज नहीं मिला। – kingsmasher1

+1

@ kingsmasher1: 'valid_signal()' लिनक्स कर्नेल में एक फ़ंक्शन है जो संकेत देता है अगर संकेत <संकेतों की संख्या है। इसका उपयोग 'मार() 'syscall जैसी चीजों द्वारा किया जाता है ताकि आप अपने स्वयं के सिग्नल को परिभाषित करने जैसी चीजों को करने से रोक सकें। – JeremyP

+1

http://lxr.free-electrons.com/ident?v=2.6.28;i=valid_signal – JeremyP

4

उपयोगकर्ता परिभाषित उद्देश्यों के लिए USR1 और USR2 संकेत दिए गए हैं।

+0

लेकिन यह एक पूर्व परिभाषित है। संकेत संख्या अद्वितीय नहीं होगी, है ना? – kingsmasher1

2

आप इस तरह की चीज़ के लिए यूएसआर 1 और यूएसआर 2 का उपयोग कर सकते हैं।

यदि यह पर्याप्त नहीं है, तो आप अपने एप्लिकेशन को सॉकेट पर सुनकर व्यवहार की तरह सिग्नल अनुकरण कर सकते हैं जो बाहरी ऐप्स संदेश भेज सकते हैं।

+0

लेकिन उस स्थिति में, हम इसे सिग्नल हैंडलर के साथ पंजीकृत नहीं कर सकते हैं। क्या हम? क्योंकि मैं चाहता हूं कि जब इस सिग्नल को टाइमर द्वारा उपयोग किया जाए, और यह संकेत अद्वितीय नहीं होना चाहिए, किसी मौजूदा सिग्नल से टकराव न करें। तो सॉकेट विधि संभव नहीं है। – kingsmasher1

+0

यदि यह आपके प्रोग्राम के अंदर पूरी तरह से है, तो आपको सिग्नल का उपयोग करने की आवश्यकता नहीं है। आप एक साधारण संदेश प्रणाली को लागू कर सकते हैं और इसका उपयोग कर सकते हैं। प्रक्रियाओं के बीच एसिंक संचार के लिए संकेतों का सबसे अच्छा उपयोग किया जाता है। –

+0

नौफल, जिसका उपयोग किसी पॉज़िक्स टाइमर, टाइमर_क्रेट द्वारा नहीं किया जा सकता है। – kingsmasher1

9

SIGRTMIN के माध्यम से SIGRTMAX के साथ अपने स्वयं कर्नेल संकलन कर सकते हैं के रूप में जो कुछ भी आप की तरह उपयोग के लिए उपलब्ध हैं, (ये नहीं सामान्य रूप से स्थिरांक लेकिन मैक्रो जो रनटाइम पर मूल्यांकन किया जाता कार्यों का विस्तार कर रहे हैं) SIGUSR1 और SIGUSR2। पूर्व में अतिरिक्त रीयलटाइम क्यूइंग समर्थन है; उत्तरार्द्ध नहीं है। बस उपयोग करने के लिए एक का चयन करें।

+0

यह स्वीकार्य उत्तर होना चाहिए – Mawg