Я пытаюсь отредактировать файл /etc/fstab
в установке CentOS с использованием C ++.Идея заключается в том, что на основе другого файла конфигурации я буду добавлять записи, которые не существуют в fstab, или редактировать записи в файле fstab, где точка монтирования совпадает.Это позволяет нам правильно настроить систему при начальной загрузке.
Я нашел setmntent()
и getmntent()
для перебора выходных записей, поэтому я могу легко проверить, существует ли запись в fstab также в моей конфигурациифайл.И затем я могу использовать addmntent()
, чтобы добавить любую запись, которая еще не существует - в документации ничего не говорится о том, что она может редактировать запись, а только добавить новую запись в конец файла.Кажется, нет никакого способа отредактировать существующую запись или удалить запись.Кажется странным, что эта функция не существует, только CR, а не UD CRUD.
Я бы предпочел не писать свой собственный синтаксический анализатор, если вообще смогу помочь.
Моя другая альтернатива:
- открыть файл с помощью
setmntent()
- прочитать весь fstab в память с помощью
getmentent()
и выполнить любые добавления и / или правки - закрыть файл, используя
endmntent()
- открыть
/etc/fstab
для записи - закрыть
/etc/fstab
(таким образом очистив файл) - открыть файл fstab, используя
setmntent()
- прокручивает записи, которые я прочитал ранее, и записывает их, используя
addmntent()
Что, хотя, вероятно, хорошо, просто кажется немного грязным.