在Linux上用C++格式化硬盘
Formatting Hard disk in C++ on Linux
我正在尝试制作一个格式化硬盘的程序,现在我被格式化我搜索了一下,找到了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实用程序的源代码开始,但这项任务肯定不是微不足道的。
相关文章:
- C++格式化输出问题
- 格式化浮点值:返回默认值
- 自动格式化程序> >更改为>>
- 如何从C++中的格式化字符串派生整数?
- 将从格式化文本文件读取的文本数据存储到链表
- 在不使用系统的情况下从C++应用程序格式化 Linux 中的 SD 卡
- 高精度双精度的 Sprintf 格式化问题
- 如何在 c++ 中格式化和访问 2D 矢量数组中的数据
- 叮当格式化程序多行格式配置错误
- 如何格式化我的文本文件以使其不会一遍又一遍地重复同一行?
- 从函数(不抛出函数)返回异常以进行消息格式化?
- 从格式化输入操作中获取读取字符数
- 如何从标准输入中检测格式化输入错误?
- 无法从 spdlog 中格式化参数
- 格式化时间 c++ dd/mm/yyyy hh:ss.
- 如何正确格式化csv文件?
- 格式化sqlite3_exec结果
- 使用 std::locale 格式化法语数字时无效的 UTF-8 数据
- C++逐步格式化字符串
- 在Linux上用C++格式化硬盘