查看: 362|回复: 0

[经验] 飞凌嵌入式ElfBoard ELF 1板卡-通用文件I/O模型之lseek

[复制链接]

该用户从未签到

发表于 2024-10-15 08:51:05 | 显示全部楼层 |阅读模式
分享到:
lseek()函数用于重新定位读/写文件偏移量,默认打开一个文件时,除非指定O_APPEND,否则偏移量为0,并不适合所有文件,如管道、FIFO或网络套接字或终端。函数原型如下:
6-1.png
fd为文件描述符,用于指定要写入的文件;
offset表示偏移量,表示要移动的字节数,可以为正数、负数、零;
whence指定偏移的基准点,有三组值:
若whence为SEEK_SET,表示从文件开始处偏移;
若whence为SEEK_CUR,表示从当前位置偏移;
若whence为SEEK_END,表示从文件结尾处偏移;
如果文件描述符指向一个管道、FIFO或网络套接字,返回-1,且errno为ESPIPE;
测试lseek的返回值时需要谨慎,不要测试是否小于0,要测试是否等于-1;
lseek仅将文件偏移量记录到内核,不引起任何IO操作,该偏移量用于下一次读写;
文件偏移量可以大于文件长度,对文件下一次的写操作将加长该文件并构成一个空洞(文件大小一样,但是占用的磁盘块不一样),没写过的字节被读为0;
6-2.png
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-18 01:48 , Processed in 0.114036 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.