在以下功能,從LDD採取:之所以使用參數loff_t *石油換食品計劃,而不是直接filp-> f_pos使用
ssize_t read(struct file *filp, char __user *buff, size_t count, loff_t *offp);
ssize_t write(struct file *filp, const char __user *buff, size_t count, loff_t *offp);
爲什麼還有的loff_t *offp
的需要?我不能直接使用filp
更新f_pos
?
此外,在54頁的作者說:
讀寫會使用它們接收到的最後一個參數,而不是作用於
filp->f_pos
直接指針更新的位置。這是一個例外...
好的,所以最好使用offp
指針,但爲什麼?
我沒有想到這一點,最重要的是,offp指針是指示設備關於「我想要讀/寫的位置」的介質。如果沒有(所以只有3個參數),系統調用容器應該使用複雜的設備來保存舊的f_pos,使用llseek,調用讀/寫,然後決定接受修改後的filp的f_pos或恢復保存的。我對嗎?謝謝。 –
是的,你是對的。隨機閱讀也會很尷尬。 –