2013-03-02 7 views
5

मुझे आश्चर्य है कि क्या कोई हुक है जो किसी लिनक्स कर्नेल मॉड्यूल में उपयोग किया जा सकता है जिसे उपयोगकर्ता स्पेस एप्लिकेशन/प्रक्रिया मारे जाने पर निकाल दिया जाता है?उपयोगकर्तास्पेस प्रक्रिया पर लिनक्स कर्नेल मॉड्यूल सिग्नल

+0

क्या यह केवल एक विशिष्ट प्रक्रिया या सभी प्रक्रियाओं के लिए है? क्या आप कुछ सिग्नल प्राप्त करने की प्रक्रिया में दिलचस्पी रखते हैं या प्रक्रिया को अच्छी तरह से बाहर निकलने की प्रक्रिया भी है? – Tuxdude

+1

** एआरएम ** पर, '# शामिल ' और 'thread_register_notifier()'। 'THREAD_NOTIFY_EXIT' का उपयोग करें। देखें: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/asm/thread_notify.h –

+0

@Tuxdude: यह सभी प्रक्रियाओं के लिए है और इसके लिए कोई संकेत मेरे मामले में मेरा कर्नेल मॉड्यूल पीआईडी ​​के आधार पर कुछ डेटा सहेज रहा है और जैसे ही प्रक्रिया मर जाती है उसे साफ़ करना होगा। – ZedTuX

उत्तर

2

आप पहले अपने कर्नेल मॉड्यूल के भीतर एक नोटिफ़ायर श्रृंखला के लिए पंजीकरण कर सकते हैं।

अंदर get_signal_to_deliver (कर्नेल/signal.c), किसी भी प्रक्रिया है जो है सिर्फ (यह एक रिश्तेदार अवधि IMHO जा रहा है) को मार डाला गया है अपने PF_SIGNALED ध्वज स्थापित किया जा रहा है। यहाँ आप तो जैसे अपने tcomm क्षेत्र का उपयोग वर्तमान प्रक्रिया के नाम के लिए जांच कर सकता है:

char tcomm[sizeof(current->comm)]; 
get_task_comm(tcomm, current); 

यदि यह वास्तव में सवाल के तहत प्रक्रिया है, तो आप सिर्फ अधिसूचना श्रृंखला है जो अपने मॉड्यूल है जो जगाने जाएगा आग सकता है उस श्रृंखला पर इंतजार कर रहा था।

+0

धन्यवाद! मैं इसे देख लूंगा! – ZedTuX

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