在Linux上用C ++格式化硬盘

时间:2012-09-09 17:14:53

标签: c++ linux

我正在尝试制作一个格式化硬盘的程序,现在我仍然坚持使用代码 格式化我搜索了,我发现SHFormatDrive()但我发现win xp及更高版本支持该功能,我无法找到任何帮助使用它!

2 个答案:

答案 0 :(得分:8)

在UNIX中执行此类操作的典型方法是使用库调用系统(const char *)来调用命令行实用程序来为您执行此操作。

当然,您需要适当的权限等。

另一方面,当然是找到开源格式代码(例如mkfs.ext3)并将其添加到您的项目中(当然,遵循许可要求)。

答案 1 :(得分:3)

如果您只想破坏硬盘驱动器上的文件系统(取消格式化),您只需打开硬盘驱动器设备文件进行写入,然后开始写入零:

#include <stdio.h>
int main() {
    char buf[8192];
    FILE *f = fopen("/dev/sda", "w");
    if(f == NULL) {
       perror("Could not open file for writing");
       return;
    }

    long unsigned int written = 0;

    while(true) {
        unsigned count = fwrite(buf, sizeof(buf), 1, f);
        written += count;
        if(count != sizeof(buf) {
            perror("Could not write file");
            break;
        }; 
    }

    fclose(f);

    printf("Bytes written: %lu\n", written);
}

注意:如果您真的知道自己在做什么,只能在未经修改的版本中使用此代码,因为这会使您的根文件系统/计算机无法使用!

如果要使用ext4或btrfs等文件系统对其进行实际格式化,则必须查看这些特定于文件系统的库。您最好先阅读mkfs.btrfs或mkfs.ext4实用程序的源代码,但这项任务肯定是非常重要的。