2011-04-20 8 views
5

मैं एक प्रक्रिया के बच्चों कार्य (प्रक्रिया) की सूची पर प्राप्त करना चाहते हैं कैसे प्राप्त कर सकते हैं, यहाँ कोड है:मैं कर्नेल कोड में बच्चों प्रक्रिया सूची

void myFunc() 
{ 
    struct task_struct* current_task; 
    struct task_struct* child_task; 
    struct list_head children_list;  

    current_task = current; 
    children_list = current_task->children; 
    child_task = list_entry(&children_list,struct task_struct,tasks); 
    printk("KERN_INFO I am parent: %d, my child is: %d \n", 
      current_task->pid,child_task->pid); 
} 

वर्तमान पीआईडी ​​ठीक है, लेकिन बाल पिड सही नहीं है। मैं क्या गलत कर रहा हूँ?

+0

मैं इस बारे में कोई ज्ञान है: यदि आप LIST_ENTRY के साथ बहुत परिचित नहीं हैं, निम्न आलेख अच्छा स्रोत है लिनक्स-कर्नेल, लेकिन मुझे लगता है कि यह 'struct list_head * children_list' और बाद में' children_list = और current_task-> बच्चों 'होना चाहिए। –

+0

धन्यवाद, लेकिन 'current_task-> children' रिटर्न' list_head' और नहीं 'list_head *' – Noga

+0

मैं जानता हूँ कि यह 5 साल बीत रहा है, लेकिन क्या @king_nak कह रहा है कि तुम ** नहीं ** चाहिए प्रतिलिपि struct है, लेकिन इसके बजाय एक सूचक का उपयोग इसे इंगित करना तो आप current_task-> बच्चों से पहले '&' डालते हैं। –

उत्तर

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