每个读/写功能都有一个参数loff_t *f_pos
。我在示例中看到,在read函数中,当我们读取时,它会增加指针;在write函数中,当我们写入时,它会增加指针。
两者的指针是否相同?
ssize_t scull_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos)
ssize_t scull_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
答案 0 :(得分:0)
是的。但这是一个好问题。在实现驱动程序时,可以为读取和写入设置f_pos,并且调用代码将存储您提供的值。因此,从理论上讲,在后台可以将读写文件位置分开。
但是lseek的描述清楚地表明,读和写都位于一个位置。否则,我们将需要一个read_seek()和一个write_seek()。