read和write的陷阱(很隐晦的)

首先我们先来了解一下系统调用的概念和CPU和RAM

为什么先讲这些呢,因为read和write函数如果要从一个磁盘里读信息,或者写一个信息到磁盘的文件都是会经过RAM的,一般再

RAM上停留的时间为5-7分钟,如果再这个时间段里,服务器因为负载过高(宕机了)(这个现象是非常多见的:比如再八卦一波:在鹿晗宣布恋情的时候新浪的服务器3-4天了宕机了好多次)。所以再这信息停留再 RAM的时间段里如果宕机,即使read和write返回成功但是,也会数据丢失(因为还在RAM)上。

那么我门怎么来解决这个问题呢。嘻嘻有办法的

再#include <unistd.h>头文件里提供了两个函数我之说其中最常用的一个

int fsync(int fd); // 这个同步的函数,而且会等待如果同步成功返回的值

这里要声明一点io的时候尽量读取一片数据调用一次这个函数,你读取一个就调用一次的话,效率是极低的。举个例子

小时候再农村,奶奶(cpu)用水从水缸(RAM)里面取,水缸里的水是从水井(磁盘)挑的,你用一次用一碗水就去就从水井挑一碗水到水缸里,效率怎么会高呢???您觉得是吧,点播关注,后面还有干货

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值