免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2218 | 回复: 4
打印 上一主题 下一主题

关于当前进程current的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-09 22:09 |只看该作者 |倒序浏览
在编写一个简单的模块的时候,按照LDD上写的打印当前进程的信息,代码如下:

  1. static int __init test_init(void)
  2. {
  3.    printk(KERN_ALERT "The process is :%s,pid is %i\n",current->comm,current->pid);
  4.    return 0;
  5. }

  6. static void __exit(void)
  7. {
  8.    printk(KERN_ALERT "Goodbye\n");
  9. }

  10. module_init(test_init);
  11. module_exit(test_exit);
复制代码


insmod test.ko后,cat /var/log/syslog为什么信息没有打印出来,
而是执行rmmod test.ko后才打印出:The process is "insmod",pid is 19127
为什么当前进程的名字是insmod,不明白,哪位给解释一下啊。
谢谢了。

论坛徽章:
0
2 [报告]
发表于 2009-11-10 01:19 |只看该作者
用TAIL -F /VAR/LOG/MESSAGES 看看

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
3 [报告]
发表于 2009-11-10 09:32 |只看该作者
因为你是用insmod加载的.ko
用应用程序的链接概念讲,他是一个obj文件,并不可以称之为程序,仅仅为程序的某一个module
而将这个module插到程序用的程序就是insmod,这个insmod运行起来后就是一个process,但是.ko运行不了
就是这个原因,所以,是用insmod程序加载的.ko,所以insmod会成为一个加载.ko的当前进程,所以你得出的comm是insmod

论坛徽章:
0
4 [报告]
发表于 2009-11-10 09:35 |只看该作者
因为你是以insmod的方式去运行的,所以当前进程就是它。
关于insmod是如何将模块加载进去这一过程的,可以参考情景分析下卷,本版也有关于insmod与rmmod的精华贴!

论坛徽章:
0
5 [报告]
发表于 2009-11-10 10:22 |只看该作者
current->pid,我有些问题,就是之前我做过内核线程时,线程的id号和current->pid的竟然一样,难道在内核中,线程和进程是可以认为是同一个级别,同一个概念吗!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP