Linux字符驱动中动态分配设备号与动态生成设备节(2)

#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
int fd, num;
//打开"/dev/CDEV_ZHU"
fd = open("/dev/CDEV_ZHU", O_RDWR, S_IRUSR | S_IWUSR);
if (fd != -1 )
{
//初次读 global_var
read(fd, &num, sizeof(int));
printf("The globalvar is %d\n", num);

//写 global_var
printf("Please input the num written to globalvar\n");
scanf("%d", &num);
write(fd, &num, sizeof(int));

//再次读 global_var
read(fd, &num, sizeof(int));
printf("The globalvar is %d\n", num);

//关闭“/dev/CDEV_ZHU”
close(fd);
}
else
{
printf("Device open failure\n");
}

return 0;
}

说明:这个程序是我修改了“深入浅出Linux设备编程”这本书的代码的来的,在项目中使用动态创建设备节点和动态生成设备号比较方便,于是就在这里分享了。

使用一个简单的makefile将(驱动) globalvar.c 编译过后 使用 insmod globalvar.ko 将驱动加载到内核,然后就将globalvartest.c 生成的可执行文件运行起来就可以操作驱动中的全局变量了。不用像书上一样还要在命令行去创建设备节点。

我使用的内核版本是2.6.33.4 。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7a967a38cb44055854c0f034afa399c2.html