【问题标题】:In linux kernel level,how to read and write a sector of hard [duplicate]在linux内核级别,如何读写硬扇区[重复]
【发布时间】:2015-02-05 20:57:29
【问题描述】:

由于某些原因,我需要在我的模块中读写一个硬盘扇区。

我想通过内核级的编程来读写一个扇区

我的 linux 内核版本是 3.13.0。

有人可以帮我吗?

【问题讨论】:

    标签: linux kernel


    【解决方案1】:

    我不确定你可以在你的模块中做什么。 如果你在 shell 上工作,你可以使用dd 命令。

    dd if=/dev/sda of=outfile

    如果您不能使用用户空间命令,您可能必须直接在磁盘块设备上工作。 需要使用open(2)系统调用打开设备(详见man 2 open)。

    int fd;
    fd = open("/dev/sda", FLAGS);
    

    之后,您可以执行读取命令(man 2 read)从设备中读取。

    ssize_t read(int fd, void *buf, size_t count);

    您还可以使用 IOCTL 向设备发送命令:

    int ioctl(int d, int request, ...);

    使用这些调用,您应该足够灵活,可以对磁盘执行任何操作。

    【讨论】:

    • 这不是我想要的答案。我想通过内核级别的编程来读写一个扇区。
    猜你喜欢
    • 2013-12-08
    • 2012-09-25
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多