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