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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44065088/article/details/102754953

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

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

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_44065088/article/details/102754953