在不使用系统的情况下从C ++应用程序格式化Linux中的SD卡

问题描述 投票:0回答:1

我有一个应用程序,用于在可移动媒体(SD卡/ Pendrive)上写数据。现在,我想添加一项功能,以便在SD卡未正确安装或由于任何原因损坏时可以格式化SD卡。

我知道我可以使用system()方法来调用诸如mkfs.ext4之类的基础实用程序来格式化可移动分区,就像我们通过终端进行的操作一样,或者使用bash脚本来卸载,格式化和重新安装可移动介质。但我想避免system()调用,因为:

它产生了一个新的外壳,我无法控制它。在这种特殊情况下,我无法检查卸载/格式化/重新安装的状态,这使我无法正确处理应用程序中的错误。是否可以使用系统库以C ++方式(使用API​​ /方法调用)完成相同的任务,而不必先调用system(),然后再调用其中的bash脚本。

如果我误解了,请纠正。

请提出建议。

谢谢

c++ linux bash format filesystems
1个回答
0
投票
This是Linux发行版用来处理这种文件系统的文件,但是文档有点稀缺:

2.1.3初始化文件系统

ext2文件系统正在由'mke2fs'程序初始化。他们俩此处描述的函数“ ext2fs_initialize”和'ext2fs_allocate_tables'完成了许多初始工作,以建立一个文件系统。但是,他们不能完成全部工作。 'mke2fs'调用'ext2fs_initialize'设置文件系统超级块,并调用'ext2fs_allocate_tables'为inode表分配空间,并且inode和块位图。此外,“ mke2fs”还必须通过用零清除来初始化inode表,创建根目录和lost + found目录,并保留保留的inode。

引号来自项目快照的生成文档(git repo https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

如果您想快速浏览一下,我也找到了this online pdf file ...

© www.soinside.com 2019 - 2024. All rights reserved.