代码之家  ›  专栏  ›  技术社区  ›  klozovin

从ext3文件系统读取块?

  •  3
  • klozovin  · 技术社区  · 16 年前

    在块级别访问ext3文件系统最简单的方法是什么?我不关心文件或原始字节,我只需要一次读取一个块。有没有一个简单的方法可以做到这一点(用C语言)?或者是一个简单的应用程序,我可以从中寻找灵感来源?我在网上找不到可用的教程,我有点害怕深入到内核源代码中去了解如何做。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Adam Goode    16 年前

    是的,看到了 e2fsprogs . 这提供了可用于执行任何操作的工具!!)使用ext2、ext3和ext4文件系统。它还包含一个库接口,所以您可以做任何其他事情。

    看看包含的debugfs,它可能足够你开始了。否则,请检查头并编写一些代码。

        2
  •  4
  •   Vinit Dhatrak    16 年前

    如果你想要一个简单的应用程序,那么我建议你看看。” dd “实用工具。我来作为 GNU Core Utility . 它的源可以下载。看看它的主页, here .
    如果您想从C代码中获得相同的结果,请参考以下代码。希望这对你有帮助。:)

    #include <stdio.h>
    #include <linux/fs.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    #define SECTOR_NO 10 /*read 10th sector*/
    
    int main()
    {
            int sector_size;
            char *buf;
            int n = SECTOR_NO;
    
            int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
            ioctl(fd, BLKSSZGET, &sector_size);
            printf("%d\n", sector_size);
            lseek(fd, n*sector_size, SEEK_SET);
    
            buf = malloc(sector_size);
            read(fd, buf, sector_size);
    
            return 0;
    }
    
        3
  •  1
  •   j_random_hacker    16 年前

    磁盘设备及其内部分区的行为与您可以读取(和写入)的常规文件类似,例如:

    head -c 2048 /dev/sda1 > first_2048_bytes
    

    当然,你必须是根。

    推荐文章