fwg*_*wgx 2 c++ linux filesystems mount
我正在尝试/etc/fstab使用C++在CentOS安装上编辑该文件.我的想法是,基于另一个配置文件,我将添加fstab中不存在的条目,或者编辑fstab文件中挂载点相同的条目.这使我们可以在初始启动时正确设置系统.
我已找到setmntent()并getmntent()迭代现有条目,因此我可以轻松检查fstab中的条目是否也存在于我的配置文件中.然后我可以使用addmntent()添加任何尚未存在的条目 - 文档中没有说明能够编辑条目,只在文件末尾添加新条目.似乎无法编辑现有条目或删除条目.奇怪的是这个功能不存在,只有CR而不是CRUD的UD.
如果我能帮助它,我宁愿不必编写自己的解析器.
我的另一种选择是:
setmntent()getmentent()并执行任何添加和/或编辑将整个fstab读入内存endmntent()/etc/fstab写作/etc/fstab(从而清空文件)setmntent()addmntent()虽然可能很好,但看起来有点乱.
在修改系统配置文件时,/etc/fstab请记住这些是关键状态,如果您的"编辑"因断电而中断,可能会导致重新启动失败.
处理这个问题的方法是:
FILE* out = setmntent("/etc/fstab.new", "rw");FILE* in = setmntent("/etc/fstab", "r");while (m = getmntent(in)) { addmntent(out, m); }fflush(out); endmntent(out); endmntent(in);/etc/fstab:rename("/etc/fstab.new", "/etc/fstab");它留给读者一个练习,可以改变while循环的主体,对现有元素进行修改,替换特制的mntent等等.如果您对此有具体问题,请询问.
UN*X语义rename()保证即使在断电的情况下,您也可以使用原始版本或新更新的版本.
有一个原因就是没有modifymntent()- 因为这会鼓励糟糕的编程/改变系统关键文件的坏方法.你在帖子的最后说"......可能很好......" - 不是.更改系统配置文件的唯一安全方法是编写完整的修改副本,将其同步到安全存储,然后使用重命名替换旧的副本.
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |