作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 linux 的新手,正在制作一个模块,用户可以在其中读取和写入设备文件。以下是我的代码,其中读取工作正常但写入功能不正常。
MODULE_LICENSE("DUAL BSD/GPL");
char message[80];
char *msg_ptr;
int dev_major = 0;
int dev_minor = 0;
struct cdev *cdev;
ssize_t dev_read(struct file *filp,char __user *buf,size_t count,loff_t *offset)
{
int i;
i=copy_to_user(buf,msg_ptr,count);
printk(KERN_ALERT"buff:%s",buf);
return 0;
}
ssize_t dev_write(struct file *filp,const char __user *buf,size_t count,loff_t *offset)
{
int j;
msg_ptr = kmalloc(sizeof(*buf),GFP_KERNEL);
copy_from_user(msg_ptr,buf,sizeof(*buf));
//printk(KERN_ALERT"msg_ptr:%s",msg_ptr);
return 0;
}
当我创建一个 char 节点然后使用 echo hi >/dev/my_dev 时它会打印 hi 但无限写入,如/var/log/messages 中所示。
最佳答案
这一行看起来不对:
copy_from_user(msg_ptr, buf, sizeof(*buf));
您只复制 sizeof(*buf)
字节,这可能是 4 或 8 个字节,具体取决于架构。
您应该使用 count
参数。
关于c - 我的代码在读取和写入设备文件时出了什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9016938/
我是一名优秀的程序员,十分优秀!