Linux系统函数write()函数

本文探讨了write、fread及fwrite函数的使用方法及其在缓存管理中的问题。通过实例解析了如何避免缓存溢出,确保数据正确写入。同时介绍了这些函数的基本参数与调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Write函数

     用法:  
#include <unistd.h>

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

参数:   
fd:要进行写操作的文件描述词。
buf:需要输出的缓冲区
count:最大输出字节计数

使用时候偶然发现,如果设置打开fb=open("/dev/fb0",O_RDONLY)之类的缓存文件,并且再打开fb_tupian=open("tu.bin",O_RDONLY);并且将fb_tupian使用read(fb_tupian,buf,size);读取之后,这个buf存放的就是tu.bin的数据

好了,问题出现了,当使用write(fb,buf,size)写第一张图片的时候还是正确的,但是当打开例如:tu001.bin的buf001,发现,不能写入framebuffer的fb文件描述符下,因为由于前面写的tu.bin的数据已经导致缓存地址溢出,因此,后面的图片再次使用write函数写入到fb的时候,fb缓存的地址没有清到缓存的首地址,因此溢出了LCD屏幕范围。

解决的方法是:需要将该文件close掉,再次打开,才能进行重写。

2.fread函数和fwrite函数

1.函数功能

  用来读写一个数据块。

2.一般调用形式

  fread(buffer,size,count,fp);

  fwrite(buffer,size,count,fp);

3.说明

  (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

  (2)size:要读写的字节数;

  (3)count:要进行读写多少个size字节的数据项;

  (4)fp:文件型指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值