免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mq110
打印 上一主题 下一主题

写了一个内核模块 实现简单的类似ps命令. [复制链接]

论坛徽章:
0
91 [报告]
发表于 2006-06-26 10:57 |只看该作者
为什么很多进程都显示不出来。好像只能显示以root权限运行的进程。我看了一下源代码,的确是遍历整个task_struct链表啊。为什么会遗漏那么多进程呢?你可以对比一下ps aux 和./myps的显示结果。请问问题出在哪里?
我的平台是ubuntu5.10

论坛徽章:
0
92 [报告]
发表于 2006-06-26 22:57 |只看该作者
支持好贴!

[ 本帖最后由 rwen2012 于 2006-6-26 22:58 编辑 ]

论坛徽章:
0
93 [报告]
发表于 2006-06-27 18:42 |只看该作者
学习!

论坛徽章:
0
94 [报告]
发表于 2007-11-23 14:31 |只看该作者
发了一个"seq_file 的问题"的帖,没太多人回,看看这边挺热闹的,顺便请教几位大哥一下:

my110大哥,如果你用你的那个方法向/proc/_ps写(我用的是seq_file方法写的,用您的方法也是一样的情况)非常多的东西(不一定非得要枚举进程信息,可以写其他一些信息),用vi 直接查看该文件 或者 fopen 读取该文件,都只返回一部分文件信息,不知道是读取的方法不对啊,还是文件根本就没有写全啊,再或者是什么“/proc下的文件是在内存中的,一次只能返回一个内存页”之类的原因呢???我如何才能用fopen方法读取该文件呢 ,非常感谢。。。

和richardhesidu大哥好象也是用seq_file方法写的,对上面的问题是否可以指点一二,非常感谢。。。

小弟新手,能不能尽量详细一点,再次感谢!!!

论坛徽章:
0
95 [报告]
发表于 2007-12-04 09:42 |只看该作者
我不会编译。。。求助,环境是ubuntu 7.10
错误如下:
Makefile:10: *** 遗漏分隔符 。 停止。

论坛徽章:
0
96 [报告]
发表于 2008-07-25 00:33 |只看该作者
原帖由 richardhesidu 于 2005-11-22 19:14 发表
tatic int ps_read(char *page, char **start, off_t offset,int count, int *eof, void *data)  
{
    static char buf[1024*8]={0}; // 核心栈不大, 省着点用. 用kmalloc()好一些.
}



这里是static声明的,应该不是在核心栈里吧?

论坛徽章:
0
97 [报告]
发表于 2008-07-25 13:51 |只看该作者
原帖由 new_learner 于 2008-7-25 00:33 发表


这里是static声明的,应该不是在核心栈里吧?

论坛徽章:
0
98 [报告]
发表于 2008-07-27 06:52 |只看该作者
有点难懂

论坛徽章:
0
99 [报告]
发表于 2008-07-27 19:09 |只看该作者

gdb 脚本实现

用 qemu 或 kgdb 调试内核的时候,也可以在 gdb 里直接实现 ps 效果 :

  1. $ cat ps
  2. #!/bin/sh

  3. cat <<\EOF
  4. set $_ps_p = &init_task
  5. set $_ps_end = 0
  6. while $_ps_end != 1
  7.         printf "%d\t\t%d\t\t\t%s\n", $_ps_p->pid, $_ps_p->parent->pid, $_ps_p->comm
  8.         xsource list_entry _ps_p $_ps_p->tasks.next task_struct tasks
  9.         if $_ps_p == &init_task
  10.                 set $_ps_end = 1
  11.         end
  12. end
  13. EOF
复制代码


运行效果 :

  1. (gdb) xsrun ps
  2. 0                0                        swapper
  3. 1                0                        init
  4. 2                0                        kthreadd
  5. 3                2                        migration/0
  6. 4                2                        ksoftirqd/0
  7. 5                2                        watchdog/0
  8. 6                2                        events/0
  9. 7                2                        khelper
  10. 40                2                        kblockd/0
  11. 45                2                        kseriod
  12. 83                2                        pdflush
  13. 84                2                        pdflush
  14. 85                2                        kswapd0
  15. 128                2                        aio/0
  16. 129                2                        nfsiod
  17. 229                2                        kpsmoused
  18. 233                2                        rpciod/0
  19. 298                1                        udevd
  20. 604                1                        sshd
  21. 620                1                        bash
复制代码


关于 gdb 脚本 :
http://blog.chinaunix.net/u/8057/showart_1087126.html

论坛徽章:
0
100 [报告]
发表于 2011-04-24 01:37 |只看该作者
good
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP