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

Formatting Hard disk in C++ on Linux

本文关键字:格式化 硬盘 C++ 上用 Linux      更新时间:2023-10-16

我正在尝试制作一个格式化硬盘的程序,现在我被格式化我搜索了一下,找到了SHFormatDrive(),但我发现这个函数支持win xp和更高版本,我找不到任何帮助!

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

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

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

如果你只是想破坏硬盘上的文件系统(取消格式化),你可以简单地打开硬盘设备文件进行写入,并开始写入零:

#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: %lun", written);
}

注意:只有当你真正知道自己在做什么时,才能在未修改的版本中使用此代码,因为这会导致你的根文件系统/计算机无法使用

如果您想使用ext4或btrfs等文件系统对其进行格式化,那么您必须查看那些特定于文件系统的库。您最好从阅读mkfs.btrfs或mkfs.ext4实用程序的源代码开始,但这项任务肯定不是微不足道的。