linux_module初学回顾
2015-10-18 14:14
591 查看
最近接到hr的实习面试通知,是一份内核模块编写的实习吧。(其实这也是我最喜欢从事的工作,因为我很喜欢kernel)
因为明天就要去面试了。这两天重新熟悉了一下模块的编写。闲来无事,随便写写以备以后再次重温,哈哈
感觉人的热情总是会改变的,看了一段时间内核,看源码看的头疼,于是乎转向网络安全去看iptables等防火墙协议去了(以至于电面的时候问我虚拟地址与物理地址是什么的时候我竟然第一反应是mac与ip等待,而且傻兮兮的问考官是不是网络安全方面的,我也是醉了)
闲话不多说了,回顾一下我模块编程的学习
makefile
make
insmod showtask.ko
dmesg
会显示些进程号,进程名啊
然后就是
make clean
rmmod showtask
因为明天就要去面试了。这两天重新熟悉了一下模块的编写。闲来无事,随便写写以备以后再次重温,哈哈
感觉人的热情总是会改变的,看了一段时间内核,看源码看的头疼,于是乎转向网络安全去看iptables等防火墙协议去了(以至于电面的时候问我虚拟地址与物理地址是什么的时候我竟然第一反应是mac与ip等待,而且傻兮兮的问考官是不是网络安全方面的,我也是醉了)
闲话不多说了,回顾一下我模块编程的学习
#include <linux/init.h> #include <linux/module.h> #include <linux/sched.h> MODULE_LICENSE("Dual BSD/GPL"); static int showtask_init(void) { struct task_struct *task;//一个task_strcut结构体的对象指针 task = current;//这个current返回当前进程号 printk( "current pid=%i command=%s ",current->pid,current->comm); printk(KERN_NOTICE "\n"); for_each_process(task)//这个是看深入理解linux内核时发现的一个宏 { printk(KERN_INFO "process id = %d tpid= %s ",task->pid,task->comm); } printk(KERN_NOTICE "\n"); return 0; } static void showtask_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(showtask_init); module_exit(showtask_exit);额,这个是按我老师要求仿写的第一个.c文件
makefile
obj-m := showtask.o KERNELBUILD :=/lib/modules/`uname -r`/build default: make -C $(KERNELBUILD) M=$(shell pwd) modules clean: rm -rf *.o *.ko *.mod.c .*.cmd .tmp_versions编译连接
make
insmod showtask.ko
dmesg
会显示些进程号,进程名啊
然后就是
make clean
rmmod showtask
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝