linux下的文件和设备

linux环境下有一句话:一切都是文件。确实很有道理,基本的操作方式:open,read,write,close对开发者来说几乎没有什么差别。

但是,普通文件和驱动文件还是有些许不同。

普通文件是有缓冲的,当我们写文件时,会先写入缓冲区。当出现以下情况时会写入文件中

1.缓冲区慢 2.ffush刷新缓冲区 3.回车换行

新手开始写程序时,向文件里面写入数据,但是打开文件时显示为空。就是这个问题。

驱动文件不一定有缓冲。大部分的char型驱动是没有缓冲的。网卡驱动有系统缓存。当我们向网卡驱动写数据时,操作系统将数据从用户空间copy到内核空间的驱动缓冲中,

如果缓冲区满会返回错误。所以当发送大数据时,如高清视频数据时 应该将系统缓冲区设置为合适大小(setsockopt)。对于没有缓冲区的驱动文件,write read数据是直接

与设备交互的。

可以通过setbuf设置文件流的缓冲。void setbuf(FILE *steam, char *buf);为了关闭缓冲,可以将buf参数设置为NULL。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值