C-给定PID(minix)的打印子过程



我目前正在从事一个项目,作为其中的一部分,我需要在minix中实现系统呼叫/库功能。

作为其中的一部分,我需要能够使用其PID打印给定过程的子过程列表。我认为我已经找到了我需要的部分,但是我坚持使用给定的PID。

struct task_struct *task; 
struct list_head *list;
list_for_each(list, &current->children) { 
    task = list_entry(list, struct task_struct, children); 
}

这看起来像是我需要的东西吗?我知道,要使我使用PID,我需要使用:

struct task_struct find_task_by_pid(pid_t pid);

但是将其与上述结合在一起不是我以前做过的。

我弄清楚了,对我来说似乎不太有效,但它有效。

#include <stdio.h>
#include "pm.h"
#include "mproc.h"
int do_printchildpids(){
int i = m_in.m1_i1; //pid received 
int c = 0; //Counter

printf("Searching for children of process: %d n", i);
while (c < NR_PROCS)
  {
    int n = mproc[c].mp_pid; //First process in the list of availableprocess
    int pinx = mproc[c].mp_parent; //Index of parent of the current process
    int ppid = mproc[pinx].mp_pid; //pid of parent process

    if(i == ppid) //If parents pid matches the given value
    {
    printf("%d n", n); //Print the childs id
    c++;
    }
    else
    {
    c++;
    }
  }
return -1;
}

相关内容

  • 没有找到相关文章

最新更新