ARM技术william hill官网
直播中

嵌入式小能手

1年用户 584经验值
擅长:嵌入式技术
私信 关注
[经验]

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

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


更多回帖

发帖
×
20
完善资料,
赚取积分