c - 如何调用文件操作的读函数的正确方法?

标签 c linux-kernel kernel linux-device-driver device-driver

在 struct file_operations 中,该结构在第 1517 行中定义:

http://lxr.free-electrons.com/source/include/linux/fs.h?a=arm

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

  ssize_t (* read) (struct file *, char __ user *, size_t, loff_t *);

从应用程序调用此方法的正确方法是什么? 我在将 "loff_t *"

作为参数传递时遇到问题

最佳答案

要在第一次从应用程序读取时获得“loff_t *”参数中的非零值,我相信您需要首先调用“lseek”。

喜欢:

#include <unistd.h>
...
offset = ...
pos = lseek(fh, (off_t) offset, SEEK_SET);
read(fh, buffer, bytesToRead);

这里的偏移量将通过“loff_t* 参数”传递给内核。

关于c - 如何调用文件操作的读函数的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17477593/

相关文章:

linux - TCP 连接可以通过使用不同的 IP 但相同的端口来实现吗?

linux-kernel - buildroot - 如何更改内核版本字符串

macos - 找不到 Mac X 框架内核

linux - VMIN=0 + select(),可能是内核错误?

c - 如何使用C语言程序通过计算机的usb端口打开/关闭电灯泡

c++ - 通过 0.0 时减去 float 时出错

linux-kernel - printk 是原子安全的吗?

使用公式计算C中long的范围

c - 在 K&R C 中传递字符串文字

c++ - Windows 中使用 IP Helper 的事件 UDP 连接的远程地址