C 如何正确调用文件操作的读取函数?

C 如何正确调用文件操作的读取函数?,c,linux-kernel,kernel,linux-device-driver,device-driver,C,Linux Kernel,Kernel,Linux Device Driver,Device Driver,在第1517行中定义的结构文件_操作中,来自: 第1520行中有读取操作的方法:   ssize_t (* read) (struct file *, char __ user *, size_t, loff_t *); 从应用程序调用此方法的正确方法是什么? 我很难将“loff\u t*”作为参数传递。我认为,要从应用程序中首次读取“loff\u t*”参数中的非零值,您需要首先调用“lseek” 比如: #包括 ... 偏移量=。。。 pos=lseek(fh,(关闭)偏移,寻道设置);

在第1517行中定义的结构文件_操作中,来自:

第1520行中有读取操作的方法:

  ssize_t (* read) (struct file *, char __ user *, size_t, loff_t *);
从应用程序调用此方法的正确方法是什么? 我很难将
“loff\u t*”

作为参数传递。我认为,要从应用程序中首次读取“loff\u t*”参数中的非零值,您需要首先调用“lseek”

比如:

#包括
...
偏移量=。。。
pos=lseek(fh,(关闭)偏移,寻道设置);
读取(fh、缓冲区、bytesToRead);

这里是通过“loff\u t*参数”传递给内核的偏移量。

loff\u t outoff;ssize_t readb=读取(fp、buf、数量和输出)谢谢,但我从驱动程序打印值,结果为0 printk(KERN_ALERT“Offset:%lld\n”,*Offset);“dmesg”中的结果始终为0
#include <unistd.h>
...
offset = ...
pos = lseek(fh, (off_t) offset, SEEK_SET);
read(fh, buffer, bytesToRead);