加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 为什么for_each_process不显示每个任务?

发布时间:2020-12-14 00:51:59 所属栏目:Linux 来源:网络整理
导读:我正在尝试遍历我正在编写的/ proc实用程序中的每个进程(/ fs / proc中的内核模块).问题是,我只看到根命名空间中的进程.我正在尝试使用sched.h中的宏for_each_process. 我可以在shell中输入ps并查看大量进程,但是我的for_each_process循环看不到它们.是什么
我正在尝试遍历我正在编写的/ proc实用程序中的每个进程(/ fs / proc中的内核模块).问题是,我只看到根命名空间中的进程.我正在尝试使用sched.h中的宏for_each_process.

我可以在shell中输入ps并查看大量进程,但是我的for_each_process循环看不到它们.是什么赋予了?

注意:我想知道它是否与rcu_read_lock有关?我害怕放一个rcu_read_lock,我不知道应该去哪里.麻烦的是,我读过的documentation似乎说在一个可抢占的内核(我的)中,在rcu_read_lock里面睡觉是违法的.我需要调用down_read(mmap_sem),我恐怕会睡觉.这意味着我不能使用rcu_read_lock?

解决方法

它应该显示所有过程.我写了这样的代码.

struct task_struct *task;

for_each_process(p) {
    printk("Task %s (pid = %d)n",p->comm,task_pid_nr(p));
}

这是打印所有过程.我怀疑你的proc_read功能.你可以将proc_read函数粘贴到这里吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读