Linux kernel 为什么write()系统调用有3个参数,而write()的驱动程序代码有4个参数?

Linux kernel 为什么write()系统调用有3个参数,而write()的驱动程序代码有4个参数?,linux-kernel,linux-device-driver,system-calls,Linux Kernel,Linux Device Driver,System Calls,我不熟悉linux设备驱动程序。我看到fops结构将write定义为: static ssize_t device_write(struct file *, const char *, size_t, loff_t *); 而userspace程序中的write函数使用3个参数 ssize_t write(int fd, const void *buf, size_t nbytes); 偏移参数loff\u t会发生什么变化?您看到的设备写入是从用户空间到内核的“写入”回调链中的最后一个函数

我不熟悉linux设备驱动程序。我看到fops结构将write定义为:

static ssize_t device_write(struct file *, const char *, size_t, loff_t *);
而userspace程序中的write函数使用3个参数

ssize_t write(int fd, const void *buf, size_t nbytes);

偏移参数
loff\u t
会发生什么变化?

您看到的
设备写入
是从用户空间到内核的“写入”回调链中的最后一个函数;Linux内核有一个文件系统相关调用的抽象,称为VFS。
偏移量
在这里进行处理,这样用户在编写时就不必担心了。但是,您仍然可以通过进行适当的“搜索”调用来访问偏移量。希望这能有所帮助。更多关于偏移量的信息可以在这里找到:谢谢,这就是我想要的答案。