0
点赞
收藏
分享

微信扫一扫

57 读取/写出/读取 文件的过程的调试


前言

问题来自于文章 请教文件读写问题

请教文件读写问题 - 内核源码-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 的时候 

57 读取/写出/读取 文件的过程的调试_inode

 

57 读取/写出/读取 文件的过程的调试_inode_02

 

 

Test14ReadFileTwice 第一次 读取的时候

57 读取/写出/读取 文件的过程的调试_#include_03

 

57 读取/写出/读取 文件的过程的调试_#include_04

 

 

echo "2222222222" > 1.txt 的时候 

57 读取/写出/读取 文件的过程的调试_#include_05

57 读取/写出/读取 文件的过程的调试_vfs_06

 

 

Test14ReadFileTwice 第二次 读取的时候

57 读取/写出/读取 文件的过程的调试_#include_07

57 读取/写出/读取 文件的过程的调试_page_08

 

 

可以看到 四次操作, 操作的都是同一个 page, 存在于 pagecache 

因此 数据是 同步的 

 

 

 

 

 

举报

相关推荐

0 条评论