Impression de processus enfants à l’aide d’un pid (MINIX)

Je travaille actuellement sur un projet et, dans le cadre de celui-ci, je dois implémenter des fonctions d’appels système / de bibliothèque dans MINIX.

Dans ce cadre, je dois pouvoir imprimer une liste des processus enfants d’un processus donné, à l’aide de son pid. Je pense avoir trouvé une partie de ce dont j’avais besoin, mais je suis obligé de le faire fonctionner avec un pid donné.

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

Cela vous semble-t-il proche de ce dont j’avais besoin? Je sais que pour passer un pid pour moi, je devrais utiliser:

 struct task_struct find_task_by_pid(pid_t pid); 

Mais combiner cela avec ce qui précède n’est pas quelque chose que j’ai déjà fait.

Je l’ai compris, ça ne me semble pas très efficace mais ça marche.

 #include  #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; }