【发布时间】:2011-05-21 12:28:57
【问题描述】:
我正在尝试使用 C++ 在 CentOS 安装上编辑 /etc/fstab 文件。这个想法是基于另一个配置文件,我将添加 fstab 中不存在的条目,或者在挂载点相同的 fstab 文件中编辑条目。这让我们可以在初始启动时正确设置系统。
我发现 setmntent() 和 getmntent() 用于迭代现有条目,因此我可以轻松检查 fstab 中的条目是否也存在于我的配置文件中。然后我可以使用addmntent() 添加任何不存在的条目 - 文档没有说明能够编辑条目,只在文件末尾添加一个新条目。似乎无法编辑现有条目或删除条目。奇怪的是,这个功能不存在,只有CR而不是CRUD的UD。
如果我能提供帮助,我宁愿不必编写自己的解析器。
我的另一种选择是:
- 使用
setmntent()打开文件 - 使用
getmentent()将整个 fstab 读入内存并执行任何添加和/或编辑 - 使用
endmntent()关闭文件 - 打开
/etc/fstab写作 - 关闭
/etc/fstab(从而清空文件) - 使用
setmntent()打开fstab - 循环浏览我之前读入的条目并使用
addmntent()将它们写出来
虽然可能很好,但看起来有点乱。
【问题讨论】:
-
将当前文件移动到备份而不是截断。
标签: c++ linux filesystems mount