前言
问题来自于文章 请教文件读写问题
请教文件读写问题 - 内核源码-Chinaunix
vim 编辑文件, 实际上删除了原有的文件建立了一个新的文件? Ls –ail . 查看 inode 编号不一样了
这里主要是 调试一下 这一系列流程
测试用例
就是一个程序, 读取 1.txt 两次, 两次之间间隔 5s 让用户更新文件
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<time.h>
int main(int argc, char **argv) {
int fd;
char buf[10] = {};
fd = open("./1.txt", O_RDWR);
read(fd, buf, 5);
printf("%s\n", buf);
sleep(10);
read(fd, buf, 5);
printf("%s\n", buf);
close(fd);
return 0;
}
echo "1111111111" > 1.txt 的时候
Test14ReadFileTwice 第一次 读取的时候
echo "2222222222" > 1.txt 的时候
Test14ReadFileTwice 第二次 读取的时候
可以看到 四次操作, 操作的都是同一个 page, 存在于 pagecache
因此 数据是 同步的
完