查找线程
struct pid *pid;
int level = 4090;
struct task_struct *task;
pid = find_vpid(level);
task = pid_task(pid, PIDTYPE_PID);
遍历所有进程
for_each_process(task) {
printk(KERN_ERR "comm=%s pid=%d \n", task->comm, task->pid;
}
遍历当前进程的所有子进程
struct task_struct *task;
struct list_head *list;
list_for_each(list,¤t->children)
{
task=list_entry(list,structtask_struct,sibling);
}
遍历进程下所有线程
struct task_struct *task, *taskori = ¤t->tasks;
rcu_read_lock();
task = taskori;
do {
printk(KERN_ERR "taskname=%s pid=%d gid=%d\n", task->comm, task->pid, task->tgid);
} while_each_thread(taskori, task);
rcu_read_unlock();
参考连接:https://blog.csdn.net/CrazyHeroZK/article/details/87361308